package com.gitee.wsl.transform.escape.sample

import com.gitee.wsl.ext.base.isHexChar
import com.gitee.wsl.text.replacer.NumericEntityDecoder
import com.gitee.wsl.text.replacer.NumericEntityEncoder
import com.gitee.wsl.text.replacer.ReplacerChain
import com.gitee.wsl.transform.escape.Escape
import com.gitee.wsl.transform.escape.EscapeString

object HTMLEscape: EscapeString(){
    val ISO8859_1_ESCAPE = listOf( //
        "\u00A0" to "&nbsp;" ,// non-breaking space
        "\u00A1" to "&iexcl;" ,// inverted exclamation mark
        "\u00A2" to "&cent;" ,// cent sign
        "\u00A3" to "&pound;" ,// pound sign
        "\u00A4" to "&curren;" ,// currency sign
        "\u00A5" to "&yen;" ,// yen sign = yuan sign
        "\u00A6" to "&brvbar;" ,// broken bar = broken vertical bar
        "\u00A7" to "&sect;" ,// section sign
        "\u00A8" to "&uml;" ,// diaeresis = spacing diaeresis
        "\u00A9" to "&copy;" ,// � - copyright sign
        "\u00AA" to "&ordf;" ,// feminine ordinal indicator
        "\u00AB" to "&laquo;" ,// left-pointing double angle quotation mark = left pointing guillemet
        "\u00AC" to "&not;" ,// not sign
        "\u00AD" to "&shy;" ,// soft hyphen = discretionary hyphen
        "\u00AE" to "&reg;" ,// � - registered trademark sign
        "\u00AF" to "&macr;" ,// macron = spacing macron = overline = APL overbar
        "\u00B0" to "&deg;" ,// degree sign
        "\u00B1" to "&plusmn;" ,// plus-minus sign = plus-or-minus sign
        "\u00B2" to "&sup2;" ,// superscript two = superscript digit two = squared
        "\u00B3" to "&sup3;" ,// superscript three = superscript digit three = cubed
        "\u00B4" to "&acute;" ,// acute accent = spacing acute
        "\u00B5" to "&micro;" ,// micro sign
        "\u00B6" to "&para;" ,// pilcrow sign = paragraph sign
        "\u00B7" to "&middot;" ,// middle dot = Georgian comma = Greek middle dot
        "\u00B8" to "&cedil;" ,// cedilla = spacing cedilla
        "\u00B9" to "&sup1;" ,// superscript one = superscript digit one
        "\u00BA" to "&ordm;" ,// masculine ordinal indicator
        "\u00BB" to "&raquo;" ,// right-pointing double angle quotation mark = right pointing guillemet
        "\u00BC" to "&frac14;" ,// vulgar fraction one quarter = fraction one quarter
        "\u00BD" to "&frac12;" ,// vulgar fraction one half = fraction one half
        "\u00BE" to "&frac34;" ,// vulgar fraction three quarters = fraction three quarters
        "\u00BF" to "&iquest;" ,// inverted question mark = turned question mark
        "\u00C0" to "&Agrave;" ,// � - uppercase A, grave accent
        "\u00C1" to "&Aacute;" ,// � - uppercase A, acute accent
        "\u00C2" to "&Acirc;" ,// � - uppercase A, circumflex accent
        "\u00C3" to "&Atilde;" ,// � - uppercase A, tilde
        "\u00C4" to "&Auml;" ,// � - uppercase A, umlaut
        "\u00C5" to "&Aring;" ,// � - uppercase A, ring
        "\u00C6" to "&AElig;" ,// � - uppercase AE
        "\u00C7" to "&Ccedil;" ,// � - uppercase C, cedilla
        "\u00C8" to "&Egrave;" ,// � - uppercase E, grave accent
        "\u00C9" to "&Eacute;" ,// � - uppercase E, acute accent
        "\u00CA" to "&Ecirc;" ,// � - uppercase E, circumflex accent
        "\u00CB" to "&Euml;" ,// � - uppercase E, umlaut
        "\u00CC" to "&Igrave;" ,// � - uppercase I, grave accent
        "\u00CD" to "&Iacute;" ,// � - uppercase I, acute accent
        "\u00CE" to "&Icirc;" ,// � - uppercase I, circumflex accent
        "\u00CF" to "&Iuml;" ,// � - uppercase I, umlaut
        "\u00D0" to "&ETH;" ,// � - uppercase Eth, Icelandic
        "\u00D1" to "&Ntilde;" ,// � - uppercase N, tilde
        "\u00D2" to "&Ograve;" ,// � - uppercase O, grave accent
        "\u00D3" to "&Oacute;" ,// � - uppercase O, acute accent
        "\u00D4" to "&Ocirc;" ,// � - uppercase O, circumflex accent
        "\u00D5" to "&Otilde;" ,// � - uppercase O, tilde
        "\u00D6" to "&Ouml;" ,// � - uppercase O, umlaut
        "\u00D7" to "&times;" ,// multiplication sign
        "\u00D8" to "&Oslash;" ,// � - uppercase O, slash
        "\u00D9" to "&Ugrave;" ,// � - uppercase U, grave accent
        "\u00DA" to "&Uacute;" ,// � - uppercase U, acute accent
        "\u00DB" to "&Ucirc;" ,// � - uppercase U, circumflex accent
        "\u00DC" to "&Uuml;" ,// � - uppercase U, umlaut
        "\u00DD" to "&Yacute;" ,// � - uppercase Y, acute accent
        "\u00DE" to "&THORN;" ,// � - uppercase THORN, Icelandic
        "\u00DF" to "&szlig;" ,// � - lowercase sharps, German
        "\u00E0" to "&agrave;" ,// � - lowercase a, grave accent
        "\u00E1" to "&aacute;" ,// � - lowercase a, acute accent
        "\u00E2" to "&acirc;" ,// � - lowercase a, circumflex accent
        "\u00E3" to "&atilde;" ,// � - lowercase a, tilde
        "\u00E4" to "&auml;" ,// � - lowercase a, umlaut
        "\u00E5" to "&aring;" ,// � - lowercase a, ring
        "\u00E6" to "&aelig;" ,// � - lowercase ae
        "\u00E7" to "&ccedil;" ,// � - lowercase c, cedilla
        "\u00E8" to "&egrave;" ,// � - lowercase e, grave accent
        "\u00E9" to "&eacute;" ,// � - lowercase e, acute accent
        "\u00EA" to "&ecirc;" ,// � - lowercase e, circumflex accent
        "\u00EB" to "&euml;" ,// � - lowercase e, umlaut
        "\u00EC" to "&igrave;" ,// � - lowercase i, grave accent
        "\u00ED" to "&iacute;" ,// � - lowercase i, acute accent
        "\u00EE" to "&icirc;" ,// � - lowercase i, circumflex accent
        "\u00EF" to "&iuml;" ,// � - lowercase i, umlaut
        "\u00F0" to "&eth;" ,// � - lowercase eth, Icelandic
        "\u00F1" to "&ntilde;" ,// � - lowercase n, tilde
        "\u00F2" to "&ograve;" ,// � - lowercase o, grave accent
        "\u00F3" to "&oacute;" ,// � - lowercase o, acute accent
        "\u00F4" to "&ocirc;" ,// � - lowercase o, circumflex accent
        "\u00F5" to "&otilde;" ,// � - lowercase o, tilde
        "\u00F6" to "&ouml;" ,// � - lowercase o, umlaut
        "\u00F7" to "&divide;" ,// division sign
        "\u00F8" to "&oslash;" ,// � - lowercase o, slash
        "\u00F9" to "&ugrave;" ,// � - lowercase u, grave accent
        "\u00FA" to "&uacute;" ,// � - lowercase u, acute accent
        "\u00FB" to "&ucirc;" ,// � - lowercase u, circumflex accent
        "\u00FC" to "&uuml;" ,// � - lowercase u, umlaut
        "\u00FD" to "&yacute;" ,// � - lowercase y, acute accent
        "\u00FE" to "&thorn;" ,// � - lowercase thorn, Icelandic
        "\u00FF" to "&yuml;" // � - lowercase y, umlaut
    )

    val HTML40_EXTENDED_ESCAPE = listOf(
        // <!-- Latin Extended-B -->
        "\u0192" to "&fnof;" ,// latin small f with hook = function= florin, U+0192 ISOtech -->
        // <!-- Greek -->
        "\u0391" to "&Alpha;" ,// greek capital letter alpha, U+0391 -->
        "\u0392" to "&Beta;" ,// greek capital letter beta, U+0392 -->
        "\u0393" to "&Gamma;" ,// greek capital letter gamma,U+0393 ISOgrk3 -->
        "\u0394" to "&Delta;" ,// greek capital letter delta,U+0394 ISOgrk3 -->
        "\u0395" to "&Epsilon;" ,// greek capital letter epsilon, U+0395 -->
        "\u0396" to "&Zeta;" ,// greek capital letter zeta, U+0396 -->
        "\u0397" to "&Eta;" ,// greek capital letter eta, U+0397 -->
        "\u0398" to "&Theta;" ,// greek capital letter theta,U+0398 ISOgrk3 -->
        "\u0399" to "&Iota;" ,// greek capital letter iota, U+0399 -->
        "\u039A" to "&Kappa;" ,// greek capital letter kappa, U+039A -->
        "\u039B" to "&Lambda;" ,// greek capital letter lambda,U+039B ISOgrk3 -->
        "\u039C" to "&Mu;" ,// greek capital letter mu, U+039C -->
        "\u039D" to "&Nu;" ,// greek capital letter nu, U+039D -->
        "\u039E" to "&Xi;" ,// greek capital letter xi, U+039E ISOgrk3 -->
        "\u039F" to "&Omicron;" ,// greek capital letter omicron, U+039F -->
        "\u03A0" to "&Pi;" ,// greek capital letter pi, U+03A0 ISOgrk3 -->
        "\u03A1" to "&Rho;" ,// greek capital letter rho, U+03A1 -->
        // <!-- there is no Sigmaf, and no U+03A2 character either -->
        "\u03A3" to "&Sigma;" ,// greek capital letter sigma,U+03A3 ISOgrk3 -->
        "\u03A4" to "&Tau;" ,// greek capital letter tau, U+03A4 -->
        "\u03A5" to "&Upsilon;" ,// greek capital letter upsilon,U+03A5 ISOgrk3 -->
        "\u03A6" to "&Phi;" ,// greek capital letter phi,U+03A6 ISOgrk3 -->
        "\u03A7" to "&Chi;" ,// greek capital letter chi, U+03A7 -->
        "\u03A8" to "&Psi;" ,// greek capital letter psi,U+03A8 ISOgrk3 -->
        "\u03A9" to "&Omega;" ,// greek capital letter omega,U+03A9 ISOgrk3 -->
        "\u03B1" to "&alpha;" ,// greek small letter alpha,U+03B1 ISOgrk3 -->
        "\u03B2" to "&beta;" ,// greek small letter beta, U+03B2 ISOgrk3 -->
        "\u03B3" to "&gamma;" ,// greek small letter gamma,U+03B3 ISOgrk3 -->
        "\u03B4" to "&delta;" ,// greek small letter delta,U+03B4 ISOgrk3 -->
        "\u03B5" to "&epsilon;" ,// greek small letter epsilon,U+03B5 ISOgrk3 -->
        "\u03B6" to "&zeta;" ,// greek small letter zeta, U+03B6 ISOgrk3 -->
        "\u03B7" to "&eta;" ,// greek small letter eta, U+03B7 ISOgrk3 -->
        "\u03B8" to "&theta;" ,// greek small letter theta,U+03B8 ISOgrk3 -->
        "\u03B9" to "&iota;" ,// greek small letter iota, U+03B9 ISOgrk3 -->
        "\u03BA" to "&kappa;" ,// greek small letter kappa,U+03BA ISOgrk3 -->
        "\u03BB" to "&lambda;" ,// greek small letter lambda,U+03BB ISOgrk3 -->
        "\u03BC" to "&mu;" ,// greek small letter mu, U+03BC ISOgrk3 -->
        "\u03BD" to "&nu;" ,// greek small letter nu, U+03BD ISOgrk3 -->
        "\u03BE" to "&xi;" ,// greek small letter xi, U+03BE ISOgrk3 -->
        "\u03BF" to "&omicron;" ,// greek small letter omicron, U+03BF NEW -->
        "\u03C0" to "&pi;" ,// greek small letter pi, U+03C0 ISOgrk3 -->
        "\u03C1" to "&rho;" ,// greek small letter rho, U+03C1 ISOgrk3 -->
        "\u03C2" to "&sigmaf;" ,// greek small letter final sigma,U+03C2 ISOgrk3 -->
        "\u03C3" to "&sigma;" ,// greek small letter sigma,U+03C3 ISOgrk3 -->
        "\u03C4" to "&tau;" ,// greek small letter tau, U+03C4 ISOgrk3 -->
        "\u03C5" to "&upsilon;" ,// greek small letter upsilon,U+03C5 ISOgrk3 -->
        "\u03C6" to "&phi;" ,// greek small letter phi, U+03C6 ISOgrk3 -->
        "\u03C7" to "&chi;" ,// greek small letter chi, U+03C7 ISOgrk3 -->
        "\u03C8" to "&psi;" ,// greek small letter psi, U+03C8 ISOgrk3 -->
        "\u03C9" to "&omega;" ,// greek small letter omega,U+03C9 ISOgrk3 -->
        "\u03D1" to "&thetasym;" ,// greek small letter theta symbol,U+03D1 NEW -->
        "\u03D2" to "&upsih;" ,// greek upsilon with hook symbol,U+03D2 NEW -->
        "\u03D6" to "&piv;" ,// greek pi symbol, U+03D6 ISOgrk3 -->
        // <!-- General Punctuation -->
        "\u2022" to "&bull;" ,// bullet = black small circle,U+2022 ISOpub -->
        // <!-- bullet is NOT the same as bullet operator, U+2219 -->
        "\u2026" to "&hellip;" ,// horizontal ellipsis = three dot leader,U+2026 ISOpub -->
        "\u2032" to "&prime;" ,// prime = minutes = feet, U+2032 ISOtech -->
        "\u2033" to "&Prime;" ,// double prime = seconds = inches,U+2033 ISOtech -->
        "\u203E" to "&oline;" ,// overline = spacing overscore,U+203E NEW -->
        "\u2044" to "&frasl;" ,// fraction slash, U+2044 NEW -->
        // <!-- Letterlike Symbols -->
        "\u2118" to "&weierp;" ,// script capital P = power set= Weierstrass p, U+2118 ISOamso -->
        "\u2111" to "&image;" ,// blackletter capital I = imaginary part,U+2111 ISOamso -->
        "\u211C" to "&real;" ,// blackletter capital R = real part symbol,U+211C ISOamso -->
        "\u2122" to "&trade;" ,// trade mark sign, U+2122 ISOnum -->
        "\u2135" to "&alefsym;" ,// alef symbol = first transfinite cardinal,U+2135 NEW -->
        // <!-- alef symbol is NOT the same as hebrew letter alef,U+05D0 although the
        // same glyph could be used to depict both characters -->
        // <!-- Arrows -->
        "\u2190" to "&larr;" ,// leftwards arrow, U+2190 ISOnum -->
        "\u2191" to "&uarr;" ,// upwards arrow, U+2191 ISOnum-->
        "\u2192" to "&rarr;" ,// rightwards arrow, U+2192 ISOnum -->
        "\u2193" to "&darr;" ,// downwards arrow, U+2193 ISOnum -->
        "\u2194" to "&harr;" ,// left right arrow, U+2194 ISOamsa -->
        "\u21B5" to "&crarr;" ,// downwards arrow with corner leftwards= carriage return, U+21B5 NEW -->
        "\u21D0" to "&lArr;" ,// leftwards double arrow, U+21D0 ISOtech -->
        // <!-- ISO 10646 does not say that lArr is the same as the 'is implied by'
        // arrow but also does not have any other character for that function.
        // So ? lArr canbe used for 'is implied by' as ISOtech suggests -->
        "\u21D1" to "&uArr;" ,// upwards double arrow, U+21D1 ISOamsa -->
        "\u21D2" to "&rArr;" ,// rightwards double arrow,U+21D2 ISOtech -->
        // <!-- ISO 10646 does not say this is the 'implies' character but does not
        // have another character with this function so ?rArr can be used for
        // 'implies' as ISOtech suggests -->
        "\u21D3" to "&dArr;" ,// downwards double arrow, U+21D3 ISOamsa -->
        "\u21D4" to "&hArr;" ,// left right double arrow,U+21D4 ISOamsa -->
        // <!-- Mathematical Operators -->
        "\u2200" to "&forall;" ,// for all, U+2200 ISOtech -->
        "\u2202" to "&part;" ,// partial differential, U+2202 ISOtech -->
        "\u2203" to "&exist;" ,// there exists, U+2203 ISOtech -->
        "\u2205" to "&empty;" ,// empty set = null set = diameter,U+2205 ISOamso -->
        "\u2207" to "&nabla;" ,// nabla = backward difference,U+2207 ISOtech -->
        "\u2208" to "&isin;" ,// element of, U+2208 ISOtech -->
        "\u2209" to "&notin;" ,// not an element of, U+2209 ISOtech -->
        "\u220B" to "&ni;" ,// contains as member, U+220B ISOtech -->
        // <!-- should there be a more memorable name than 'ni'? -->
        "\u220F" to "&prod;" ,// n-ary product = product sign,U+220F ISOamsb -->
        // <!-- prod is NOT the same character as U+03A0 'greek capital letter pi'
        // though the same glyph might be used for both -->
        "\u2211" to "&sum;" ,// n-ary summation, U+2211 ISOamsb -->
        // <!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
        // though the same glyph might be used for both -->
        "\u2212" to "&minus;" ,// minus sign, U+2212 ISOtech -->
        "\u2217" to "&lowast;" ,// asterisk operator, U+2217 ISOtech -->
        "\u221A" to "&radic;" ,// square root = radical sign,U+221A ISOtech -->
        "\u221D" to "&prop;" ,// proportional to, U+221D ISOtech -->
        "\u221E" to "&infin;" ,// infinity, U+221E ISOtech -->
        "\u2220" to "&ang;" ,// angle, U+2220 ISOamso -->
        "\u2227" to "&and;" ,// logical and = wedge, U+2227 ISOtech -->
        "\u2228" to "&or;" ,// logical or = vee, U+2228 ISOtech -->
        "\u2229" to "&cap;" ,// intersection = cap, U+2229 ISOtech -->
        "\u222A" to "&cup;" ,// union = cup, U+222A ISOtech -->
        "\u222B" to "&int;" ,// integral, U+222B ISOtech -->
        "\u2234" to "&there4;" ,// therefore, U+2234 ISOtech -->
        "\u223C" to "&sim;" ,// tilde operator = varies with = similar to,U+223C ISOtech -->
        // <!-- tilde operator is NOT the same character as the tilde, U+007E,although
        // the same glyph might be used to represent both -->
        "\u2245" to "&cong;" ,// approximately equal to, U+2245 ISOtech -->
        "\u2248" to "&asymp;" ,// almost equal to = asymptotic to,U+2248 ISOamsr -->
        "\u2260" to "&ne;" ,// not equal to, U+2260 ISOtech -->
        "\u2261" to "&equiv;" ,// identical to, U+2261 ISOtech -->
        "\u2264" to "&le;" ,// less-than or equal to, U+2264 ISOtech -->
        "\u2265" to "&ge;" ,// greater-than or equal to,U+2265 ISOtech -->
        "\u2282" to "&sub;" ,// subset of, U+2282 ISOtech -->
        "\u2283" to "&sup;" ,// superset of, U+2283 ISOtech -->
        // <!-- note that nsup, 'not a superset of, U+2283' is not covered by the
        // Symbol font encoding and is not included. Should it be, for symmetry?
        // It is in ISOamsn --> <!ENTITY nsub" to "8836"},
        // not a subset of, U+2284 ISOamsn -->
        "\u2286" to "&sube;" ,// subset of or equal to, U+2286 ISOtech -->
        "\u2287" to "&supe;" ,// superset of or equal to,U+2287 ISOtech -->
        "\u2295" to "&oplus;" ,// circled plus = direct sum,U+2295 ISOamsb -->
        "\u2297" to "&otimes;" ,// circled times = vector product,U+2297 ISOamsb -->
        "\u22A5" to "&perp;" ,// up tack = orthogonal to = perpendicular,U+22A5 ISOtech -->
        "\u22C5" to "&sdot;" ,// dot operator, U+22C5 ISOamsb -->
        // <!-- dot operator is NOT the same character as U+00B7 middle dot -->
        // <!-- Miscellaneous Technical -->
        "\u2308" to "&lceil;" ,// left ceiling = apl upstile,U+2308 ISOamsc -->
        "\u2309" to "&rceil;" ,// right ceiling, U+2309 ISOamsc -->
        "\u230A" to "&lfloor;" ,// left floor = apl downstile,U+230A ISOamsc -->
        "\u230B" to "&rfloor;" ,// right floor, U+230B ISOamsc -->
        "\u2329" to "&lang;" ,// left-pointing angle bracket = bra,U+2329 ISOtech -->
        // <!-- lang is NOT the same character as U+003C 'less than' or U+2039 'single left-pointing angle quotation
        // mark' -->
        "\u232A" to "&rang;" ,// right-pointing angle bracket = ket,U+232A ISOtech -->
        // <!-- rang is NOT the same character as U+003E 'greater than' or U+203A
        // 'single right-pointing angle quotation mark' -->
        // <!-- Geometric Shapes -->
        "\u25CA" to "&loz;" ,// lozenge, U+25CA ISOpub -->
        // <!-- Miscellaneous Symbols -->
        "\u2660" to "&spades;" ,// black spade suit, U+2660 ISOpub -->
        // <!-- black here seems to mean filled as opposed to hollow -->
        "\u2663" to "&clubs;" ,// black club suit = shamrock,U+2663 ISOpub -->
        "\u2665" to "&hearts;" ,// black heart suit = valentine,U+2665 ISOpub -->
        "\u2666" to "&diams;" ,// black diamond suit, U+2666 ISOpub -->

        // <!-- Latin Extended-A -->
        "\u0152" to "&OElig;" ,// -- latin capital ligature OE,U+0152 ISOlat2 -->
        "\u0153" to "&oelig;" ,// -- latin small ligature oe, U+0153 ISOlat2 -->
        // <!-- ligature is a misnomer, this is a separate character in some languages -->
        "\u0160" to "&Scaron;" ,// -- latin capital letter S with caron,U+0160 ISOlat2 -->
        "\u0161" to "&scaron;" ,// -- latin small letter s with caron,U+0161 ISOlat2 -->
        "\u0178" to "&Yuml;" ,// -- latin capital letter Y with diaeresis,U+0178 ISOlat2 -->
        // <!-- Spacing Modifier Letters -->
        "\u02C6" to "&circ;" ,// -- modifier letter circumflex accent,U+02C6 ISOpub -->
        "\u02DC" to "&tilde;" ,// small tilde, U+02DC ISOdia -->
        // <!-- General Punctuation -->
        "\u2002" to "&ensp;" ,// en space, U+2002 ISOpub -->
        "\u2003" to "&emsp;" ,// em space, U+2003 ISOpub -->
        "\u2009" to "&thinsp;" ,// thin space, U+2009 ISOpub -->
        "\u200C" to "&zwnj;" ,// zero width non-joiner,U+200C NEW RFC 2070 -->
        "\u200D" to "&zwj;" ,// zero width joiner, U+200D NEW RFC 2070 -->
        "\u200E" to "&lrm;" ,// left-to-right mark, U+200E NEW RFC 2070 -->
        "\u200F" to "&rlm;" ,// right-to-left mark, U+200F NEW RFC 2070 -->
        "\u2013" to "&ndash;" ,// en dash, U+2013 ISOpub -->
        "\u2014" to "&mdash;" ,// em dash, U+2014 ISOpub -->
        "\u2018" to "&lsquo;" ,// left single quotation mark,U+2018 ISOnum -->
        "\u2019" to "&rsquo;" ,// right single quotation mark,U+2019 ISOnum -->
        "\u201A" to "&sbquo;" ,// single low-9 quotation mark, U+201A NEW -->
        "\u201C" to "&ldquo;" ,// left double quotation mark,U+201C ISOnum -->
        "\u201D" to "&rdquo;" ,// right double quotation mark,U+201D ISOnum -->
        "\u201E" to "&bdquo;" ,// double low-9 quotation mark, U+201E NEW -->
        "\u2020" to "&dagger;" ,// dagger, U+2020 ISOpub -->
        "\u2021" to "&Dagger;" ,// double dagger, U+2021 ISOpub -->
        "\u2030" to "&permil;" ,// per mille sign, U+2030 ISOtech -->
        "\u2039" to "&lsaquo;" ,// single left-pointing angle quotation mark,U+2039 ISO proposed -->
        // <!-- lsaquo is proposed but not yet ISO standardized -->
        "\u203A" to "&rsaquo;" ,// single right-pointing angle quotation mark,U+203A ISO proposed -->
        // <!-- rsaquo is proposed but not yet ISO standardized -->
        "\u20AC" to "&euro;" // -- euro sign, U+20AC NEW -->
    )

    /**
     * A List<Pair<String, String>> to encode HTML5 entities
     */
    val HTML5Encode = listOf(

        "Æ" to "&AElig",
        "Æ" to "&AElig;",
        "&" to "&AMP",
        "&" to "&AMP;",
        "Á" to "&Aacute",
        "Á" to "&Aacute;",
        "Ă" to "&Abreve;",
        "Â" to "&Acirc",
        "Â" to "&Acirc;",
        "А" to "&Acy;",
        "𝔄" to "&Afr;",
        "À" to "&Agrave",
        "À" to "&Agrave;",
        "Α" to "&Alpha;",
        "Ā" to "&Amacr;",
        "⩓" to "&And;",
        "Ą" to "&Aogon;",
        "𝔸" to "&Aopf;",
        "⁡" to "&ApplyFunction;",
        "Å" to "&Aring",
        "Å" to "&Aring;",
        "𝒜" to "&Ascr;",
        "≔" to "&Assign;",
        "Ã" to "&Atilde",
        "Ã" to "&Atilde;",
        "Ä" to "&Auml",
        "Ä" to "&Auml;",
        "∖" to "&Backslash;",
        "⫧" to "&Barv;",
        "⌆" to "&Barwed;",
        "Б" to "&Bcy;",
        "∵" to "&Because;",
        "ℬ" to "&Bernoullis;",
        "Β" to "&Beta;",
        "𝔅" to "&Bfr;",
        "𝔹" to "&Bopf;",
        "˘" to "&Breve;",
        "ℬ" to "&Bscr;",
        "≎" to "&Bumpeq;",
        "Ч" to "&CHcy;",
        "©" to "&COPY",
        "©" to "&COPY;",
        "Ć" to "&Cacute;",
        "⋒" to "&Cap;",
        "ⅅ" to "&CapitalDifferentialD;",
        "ℭ" to "&Cayleys;",
        "Č" to "&Ccaron;",
        "Ç" to "&Ccedil",
        "Ç" to "&Ccedil;",
        "Ĉ" to "&Ccirc;",
        "∰" to "&Cconint;",
        "Ċ" to "&Cdot;",
        "¸" to "&Cedilla;",
        "·" to "&CenterDot;",
        "ℭ" to "&Cfr;",
        "Χ" to "&Chi;",
        "⊙" to "&CircleDot;",
        "⊖" to "&CircleMinus;",
        "⊕" to "&CirclePlus;",
        "⊗" to "&CircleTimes;",
        "∲" to "&ClockwiseContourIntegral;",
        "”" to "&CloseCurlyDoubleQuote;",
        "’" to "&CloseCurlyQuote;",
        "∷" to "&Colon;",
        "⩴" to "&Colone;",
        "≡" to "&Congruent;",
        "∯" to "&Conint;",
        "∮" to "&ContourIntegral;",
        "ℂ" to "&Copf;",
        "∐" to "&Coproduct;",
        "∳" to "&CounterClockwiseContourIntegral;",
        "⨯" to "&Cross;",
        "𝒞" to "&Cscr;",
        "⋓" to "&Cup;",
        "≍" to "&CupCap;",
        "ⅅ" to "&DD;",
        "⤑" to "&DDotrahd;",
        "Ђ" to "&DJcy;",
        "Ѕ" to "&DScy;",
        "Џ" to "&DZcy;",
        "‡" to "&Dagger;",
        "↡" to "&Darr;",
        "⫤" to "&Dashv;",
        "Ď" to "&Dcaron;",
        "Д" to "&Dcy;",
        "∇" to "&Del;",
        "Δ" to "&Delta;",
        "𝔇" to "&Dfr;",
        "´" to "&DiacriticalAcute;",
        "˙" to "&DiacriticalDot;",
        "˝" to "&DiacriticalDoubleAcute;",
        "`" to "&DiacriticalGrave;",
        "˜" to "&DiacriticalTilde;",
        "⋄" to "&Diamond;",
        "ⅆ" to "&DifferentialD;",
        "𝔻" to "&Dopf;",
        "¨" to "&Dot;",
        "⃜" to "&DotDot;",
        "≐" to "&DotEqual;",
        "∯" to "&DoubleContourIntegral;",
        "¨" to "&DoubleDot;",
        "⇓" to "&DoubleDownArrow;",
        "⇐" to "&DoubleLeftArrow;",
        "⇔" to "&DoubleLeftRightArrow;",
        "⫤" to "&DoubleLeftTee;",
        "⟸" to "&DoubleLongLeftArrow;",
        "⟺" to "&DoubleLongLeftRightArrow;",
        "⟹" to "&DoubleLongRightArrow;",
        "⇒" to "&DoubleRightArrow;",
        "⊨" to "&DoubleRightTee;",
        "⇑" to "&DoubleUpArrow;",
        "⇕" to "&DoubleUpDownArrow;",
        "∥" to "&DoubleVerticalBar;",
        "↓" to "&DownArrow;",
        "⤓" to "&DownArrowBar;",
        "⇵" to "&DownArrowUpArrow;",
        "̑" to "&DownBreve;",
        "⥐" to "&DownLeftRightVector;",
        "⥞" to "&DownLeftTeeVector;",
        "↽" to "&DownLeftVector;",
        "⥖" to "&DownLeftVectorBar;",
        "⥟" to "&DownRightTeeVector;",
        "⇁" to "&DownRightVector;",
        "⥗" to "&DownRightVectorBar;",
        "⊤" to "&DownTee;",
        "↧" to "&DownTeeArrow;",
        "⇓" to "&Downarrow;",
        "𝒟" to "&Dscr;",
        "Đ" to "&Dstrok;",
        "Ŋ" to "&ENG;",
        "Ð" to "&ETH",
        "Ð" to "&ETH;",
        "É" to "&Eacute",
        "É" to "&Eacute;",
        "Ě" to "&Ecaron;",
        "Ê" to "&Ecirc",
        "Ê" to "&Ecirc;",
        "Э" to "&Ecy;",
        "Ė" to "&Edot;",
        "𝔈" to "&Efr;",
        "È" to "&Egrave",
        "È" to "&Egrave;",
        "∈" to "&Element;",
        "Ē" to "&Emacr;",
        "◻" to "&EmptySmallSquare;",
        "▫" to "&EmptyVerySmallSquare;",
        "Ę" to "&Eogon;",
        "𝔼" to "&Eopf;",
        "Ε" to "&Epsilon;",
        "⩵" to "&Equal;",
        "≂" to "&EqualTilde;",
        "⇌" to "&Equilibrium;",
        "ℰ" to "&Escr;",
        "⩳" to "&Esim;",
        "Η" to "&Eta;",
        "Ë" to "&Euml",
        "Ë" to "&Euml;",
        "∃" to "&Exists;",
        "ⅇ" to "&ExponentialE;",
        "Ф" to "&Fcy;",
        "𝔉" to "&Ffr;",
        "◼" to "&FilledSmallSquare;",
        "▪" to "&FilledVerySmallSquare;",
        "𝔽" to "&Fopf;",
        "∀" to "&ForAll;",
        "ℱ" to "&Fouriertrf;",
        "ℱ" to "&Fscr;",
        "Ѓ" to "&GJcy;",
        ">" to "&GT",
        ">" to "&GT;",
        "Γ" to "&Gamma;",
        "Ϝ" to "&Gammad;",
        "Ğ" to "&Gbreve;",
        "Ģ" to "&Gcedil;",
        "Ĝ" to "&Gcirc;",
        "Г" to "&Gcy;",
        "Ġ" to "&Gdot;",
        "𝔊" to "&Gfr;",
        "⋙" to "&Gg;",
        "𝔾" to "&Gopf;",
        "≥" to "&GreaterEqual;",
        "⋛" to "&GreaterEqualLess;",
        "≧" to "&GreaterFullEqual;",
        "⪢" to "&GreaterGreater;",
        "≷" to "&GreaterLess;",
        "⩾" to "&GreaterSlantEqual;",
        "≳" to "&GreaterTilde;",
        "𝒢" to "&Gscr;",
        "≫" to "&Gt;",
        "Ъ" to "&HARDcy;",
        "ˇ" to "&Hacek;",
        "^" to "&Hat;",
        "Ĥ" to "&Hcirc;",
        "ℌ" to "&Hfr;",
        "ℋ" to "&HilbertSpace;",
        "ℍ" to "&Hopf;",
        "─" to "&HorizontalLine;",
        "ℋ" to "&Hscr;",
        "Ħ" to "&Hstrok;",
        "≎" to "&HumpDownHump;",
        "≏" to "&HumpEqual;",
        "Е" to "&IEcy;",
        "Ĳ" to "&IJlig;",
        "Ё" to "&IOcy;",
        "Í" to "&Iacute",
        "Í" to "&Iacute;",
        "Î" to "&Icirc",
        "Î" to "&Icirc;",
        "И" to "&Icy;",
        "İ" to "&Idot;",
        "ℑ" to "&Ifr;",
        "Ì" to "&Igrave",
        "Ì" to "&Igrave;",
        "ℑ" to "&Im;",
        "Ī" to "&Imacr;",
        "ⅈ" to "&ImaginaryI;",
        "⇒" to "&Implies;",
        "∬" to "&Int;",
        "∫" to "&Integral;",
        "⋂" to "&Intersection;",
        "⁣" to "&InvisibleComma;",
        "⁢" to "&InvisibleTimes;",
        "Į" to "&Iogon;",
        "𝕀" to "&Iopf;",
        "Ι" to "&Iota;",
        "ℐ" to "&Iscr;",
        "Ĩ" to "&Itilde;",
        "І" to "&Iukcy;",
        "Ï" to "&Iuml",
        "Ï" to "&Iuml;",
        "Ĵ" to "&Jcirc;",
        "Й" to "&Jcy;",
        "𝔍" to "&Jfr;",
        "𝕁" to "&Jopf;",
        "𝒥" to "&Jscr;",
        "Ј" to "&Jsercy;",
        "Є" to "&Jukcy;",
        "Х" to "&KHcy;",
        "Ќ" to "&KJcy;",
        "Κ" to "&Kappa;",
        "Ķ" to "&Kcedil;",
        "К" to "&Kcy;",
        "𝔎" to "&Kfr;",
        "𝕂" to "&Kopf;",
        "𝒦" to "&Kscr;",
        "Љ" to "&LJcy;",
        "<" to "&LT",
        "<" to "&LT;",
        "Ĺ" to "&Lacute;",
        "Λ" to "&Lambda;",
        "⟪" to "&Lang;",
        "ℒ" to "&Laplacetrf;",
        "↞" to "&Larr;",
        "Ľ" to "&Lcaron;",
        "Ļ" to "&Lcedil;",
        "Л" to "&Lcy;",
        "⟨" to "&LeftAngleBracket;",
        "←" to "&LeftArrow;",
        "⇤" to "&LeftArrowBar;",
        "⇆" to "&LeftArrowRightArrow;",
        "⌈" to "&LeftCeiling;",
        "⟦" to "&LeftDoubleBracket;",
        "⥡" to "&LeftDownTeeVector;",
        "⇃" to "&LeftDownVector;",
        "⥙" to "&LeftDownVectorBar;",
        "⌊" to "&LeftFloor;",
        "↔" to "&LeftRightArrow;",
        "⥎" to "&LeftRightVector;",
        "⊣" to "&LeftTee;",
        "↤" to "&LeftTeeArrow;",
        "⥚" to "&LeftTeeVector;",
        "⊲" to "&LeftTriangle;",
        "⧏" to "&LeftTriangleBar;",
        "⊴" to "&LeftTriangleEqual;",
        "⥑" to "&LeftUpDownVector;",
        "⥠" to "&LeftUpTeeVector;",
        "↿" to "&LeftUpVector;",
        "⥘" to "&LeftUpVectorBar;",
        "↼" to "&LeftVector;",
        "⥒" to "&LeftVectorBar;",
        "⇐" to "&Leftarrow;",
        "⇔" to "&Leftrightarrow;",
        "⋚" to "&LessEqualGreater;",
        "≦" to "&LessFullEqual;",
        "≶" to "&LessGreater;",
        "⪡" to "&LessLess;",
        "⩽" to "&LessSlantEqual;",
        "≲" to "&LessTilde;",
        "𝔏" to "&Lfr;",
        "⋘" to "&Ll;",
        "⇚" to "&Lleftarrow;",
        "Ŀ" to "&Lmidot;",
        "⟵" to "&LongLeftArrow;",
        "⟷" to "&LongLeftRightArrow;",
        "⟶" to "&LongRightArrow;",
        "⟸" to "&Longleftarrow;",
        "⟺" to "&Longleftrightarrow;",
        "⟹" to "&Longrightarrow;",
        "𝕃" to "&Lopf;",
        "↙" to "&LowerLeftArrow;",
        "↘" to "&LowerRightArrow;",
        "ℒ" to "&Lscr;",
        "↰" to "&Lsh;",
        "Ł" to "&Lstrok;",
        "≪" to "&Lt;",
        "⤅" to "&Map;",
        "М" to "&Mcy;",
        " " to "&MediumSpace;",
        "ℳ" to "&Mellintrf;",
        "𝔐" to "&Mfr;",
        "∓" to "&MinusPlus;",
        "𝕄" to "&Mopf;",
        "ℳ" to "&Mscr;",
        "Μ" to "&Mu;",
        "Њ" to "&NJcy;",
        "Ń" to "&Nacute;",
        "Ň" to "&Ncaron;",
        "Ņ" to "&Ncedil;",
        "Н" to "&Ncy;",
        "​" to "&NegativeMediumSpace;",
        "​" to "&NegativeThickSpace;",
        "​" to "&NegativeThinSpace;",
        "​" to "&NegativeVeryThinSpace;",
        "≫" to "&NestedGreaterGreater;",
        "≪" to "&NestedLessLess;",
        "\n" to "&NewLine;",
        "𝔑" to "&Nfr;",
        "⁠" to "&NoBreak;",
        " " to "&NonBreakingSpace;",
        "ℕ" to "&Nopf;",
        "⫬" to "&Not;",
        "≢" to "&NotCongruent;",
        "≭" to "&NotCupCap;",
        "∦" to "&NotDoubleVerticalBar;",
        "∉" to "&NotElement;",
        "≠" to "&NotEqual;",
        "≂̸" to "&NotEqualTilde;",
        "∄" to "&NotExists;",
        "≯" to "&NotGreater;",
        "≱" to "&NotGreaterEqual;",
        "≧̸" to "&NotGreaterFullEqual;",
        "≫̸" to "&NotGreaterGreater;",
        "≹" to "&NotGreaterLess;",
        "⩾̸" to "&NotGreaterSlantEqual;",
        "≵" to "&NotGreaterTilde;",
        "≎̸" to "&NotHumpDownHump;",
        "≏̸" to "&NotHumpEqual;",
        "⋪" to "&NotLeftTriangle;",
        "⧏̸" to "&NotLeftTriangleBar;",
        "⋬" to "&NotLeftTriangleEqual;",
        "≮" to "&NotLess;",
        "≰" to "&NotLessEqual;",
        "≸" to "&NotLessGreater;",
        "≪̸" to "&NotLessLess;",
        "⩽̸" to "&NotLessSlantEqual;",
        "≴" to "&NotLessTilde;",
        "⪢̸" to "&NotNestedGreaterGreater;",
        "⪡̸" to "&NotNestedLessLess;",
        "⊀" to "&NotPrecedes;",
        "⪯̸" to "&NotPrecedesEqual;",
        "⋠" to "&NotPrecedesSlantEqual;",
        "∌" to "&NotReverseElement;",
        "⋫" to "&NotRightTriangle;",
        "⧐̸" to "&NotRightTriangleBar;",
        "⋭" to "&NotRightTriangleEqual;",
        "⊏̸" to "&NotSquareSubset;",
        "⋢" to "&NotSquareSubsetEqual;",
        "⊐̸" to "&NotSquareSuperset;",
        "⋣" to "&NotSquareSupersetEqual;",
        "⊂⃒" to "&NotSubset;",
        "⊈" to "&NotSubsetEqual;",
        "⊁" to "&NotSucceeds;",
        "⪰̸" to "&NotSucceedsEqual;",
        "⋡" to "&NotSucceedsSlantEqual;",
        "≿̸" to "&NotSucceedsTilde;",
        "⊃⃒" to "&NotSuperset;",
        "⊉" to "&NotSupersetEqual;",
        "≁" to "&NotTilde;",
        "≄" to "&NotTildeEqual;",
        "≇" to "&NotTildeFullEqual;",
        "≉" to "&NotTildeTilde;",
        "∤" to "&NotVerticalBar;",
        "𝒩" to "&Nscr;",
        "Ñ" to "&Ntilde",
        "Ñ" to "&Ntilde;",
        "Ν" to "&Nu;",
        "Œ" to "&OElig;",
        "Ó" to "&Oacute",
        "Ó" to "&Oacute;",
        "Ô" to "&Ocirc",
        "Ô" to "&Ocirc;",
        "О" to "&Ocy;",
        "Ő" to "&Odblac;",
        "𝔒" to "&Ofr;",
        "Ò" to "&Ograve",
        "Ò" to "&Ograve;",
        "Ō" to "&Omacr;",
        "Ω" to "&Omega;",
        "Ο" to "&Omicron;",
        "𝕆" to "&Oopf;",
        "“" to "&OpenCurlyDoubleQuote;",
        "‘" to "&OpenCurlyQuote;",
        "⩔" to "&Or;",
        "𝒪" to "&Oscr;",
        "Ø" to "&Oslash",
        "Ø" to "&Oslash;",
        "Õ" to "&Otilde",
        "Õ" to "&Otilde;",
        "⨷" to "&Otimes;",
        "Ö" to "&Ouml",
        "Ö" to "&Ouml;",
        "‾" to "&OverBar;",
        "⏞" to "&OverBrace;",
        "⎴" to "&OverBracket;",
        "⏜" to "&OverParenthesis;",
        "∂" to "&PartialD;",
        "П" to "&Pcy;",
        "𝔓" to "&Pfr;",
        "Φ" to "&Phi;",
        "Π" to "&Pi;",
        "±" to "&PlusMinus;",
        "ℌ" to "&Poincareplane;",
        "ℙ" to "&Popf;",
        "⪻" to "&Pr;",
        "≺" to "&Precedes;",
        "⪯" to "&PrecedesEqual;",
        "≼" to "&PrecedesSlantEqual;",
        "≾" to "&PrecedesTilde;",
        "″" to "&Prime;",
        "∏" to "&Product;",
        "∷" to "&Proportion;",
        "∝" to "&Proportional;",
        "𝒫" to "&Pscr;",
        "Ψ" to "&Psi;",
        "\"" to "&QUOT",
        "\"" to "&QUOT;",
        "𝔔" to "&Qfr;",
        "ℚ" to "&Qopf;",
        "𝒬" to "&Qscr;",
        "⤐" to "&RBarr;",
        "®" to "&REG",
        "®" to "&REG;",
        "Ŕ" to "&Racute;",
        "⟫" to "&Rang;",
        "↠" to "&Rarr;",
        "⤖" to "&Rarrtl;",
        "Ř" to "&Rcaron;",
        "Ŗ" to "&Rcedil;",
        "Р" to "&Rcy;",
        "ℜ" to "&Re;",
        "∋" to "&ReverseElement;",
        "⇋" to "&ReverseEquilibrium;",
        "⥯" to "&ReverseUpEquilibrium;",
        "ℜ" to "&Rfr;",
        "Ρ" to "&Rho;",
        "⟩" to "&RightAngleBracket;",
        "→" to "&RightArrow;",
        "⇥" to "&RightArrowBar;",
        "⇄" to "&RightArrowLeftArrow;",
        "⌉" to "&RightCeiling;",
        "⟧" to "&RightDoubleBracket;",
        "⥝" to "&RightDownTeeVector;",
        "⇂" to "&RightDownVector;",
        "⥕" to "&RightDownVectorBar;",
        "⌋" to "&RightFloor;",
        "⊢" to "&RightTee;",
        "↦" to "&RightTeeArrow;",
        "⥛" to "&RightTeeVector;",
        "⊳" to "&RightTriangle;",
        "⧐" to "&RightTriangleBar;",
        "⊵" to "&RightTriangleEqual;",
        "⥏" to "&RightUpDownVector;",
        "⥜" to "&RightUpTeeVector;",
        "↾" to "&RightUpVector;",
        "⥔" to "&RightUpVectorBar;",
        "⇀" to "&RightVector;",
        "⥓" to "&RightVectorBar;",
        "⇒" to "&Rightarrow;",
        "ℝ" to "&Ropf;",
        "⥰" to "&RoundImplies;",
        "⇛" to "&Rrightarrow;",
        "ℛ" to "&Rscr;",
        "↱" to "&Rsh;",
        "⧴" to "&RuleDelayed;",
        "Щ" to "&SHCHcy;",
        "Ш" to "&SHcy;",
        "Ь" to "&SOFTcy;",
        "Ś" to "&Sacute;",
        "⪼" to "&Sc;",
        "Š" to "&Scaron;",
        "Ş" to "&Scedil;",
        "Ŝ" to "&Scirc;",
        "С" to "&Scy;",
        "𝔖" to "&Sfr;",
        "↓" to "&ShortDownArrow;",
        "←" to "&ShortLeftArrow;",
        "→" to "&ShortRightArrow;",
        "↑" to "&ShortUpArrow;",
        "Σ" to "&Sigma;",
        "∘" to "&SmallCircle;",
        "𝕊" to "&Sopf;",
        "√" to "&Sqrt;",
        "□" to "&Square;",
        "⊓" to "&SquareIntersection;",
        "⊏" to "&SquareSubset;",
        "⊑" to "&SquareSubsetEqual;",
        "⊐" to "&SquareSuperset;",
        "⊒" to "&SquareSupersetEqual;",
        "⊔" to "&SquareUnion;",
        "𝒮" to "&Sscr;",
        "⋆" to "&Star;",
        "⋐" to "&Sub;",
        "⋐" to "&Subset;",
        "⊆" to "&SubsetEqual;",
        "≻" to "&Succeeds;",
        "⪰" to "&SucceedsEqual;",
        "≽" to "&SucceedsSlantEqual;",
        "≿" to "&SucceedsTilde;",
        "∋" to "&SuchThat;",
        "∑" to "&Sum;",
        "⋑" to "&Sup;",
        "⊃" to "&Superset;",
        "⊇" to "&SupersetEqual;",
        "⋑" to "&Supset;",
        "Þ" to "&THORN",
        "Þ" to "&THORN;",
        "™" to "&TRADE;",
        "Ћ" to "&TSHcy;",
        "Ц" to "&TScy;",
        "	" to "&Tab;",
        "Τ" to "&Tau;",
        "Ť" to "&Tcaron;",
        "Ţ" to "&Tcedil;",
        "Т" to "&Tcy;",
        "𝔗" to "&Tfr;",
        "∴" to "&Therefore;",
        "Θ" to "&Theta;",
        "  " to "&ThickSpace;",
        " " to "&ThinSpace;",
        "∼" to "&Tilde;",
        "≃" to "&TildeEqual;",
        "≅" to "&TildeFullEqual;",
        "≈" to "&TildeTilde;",
        "𝕋" to "&Topf;",
        "⃛" to "&TripleDot;",
        "𝒯" to "&Tscr;",
        "Ŧ" to "&Tstrok;",
        "Ú" to "&Uacute",
        "Ú" to "&Uacute;",
        "↟" to "&Uarr;",
        "⥉" to "&Uarrocir;",
        "Ў" to "&Ubrcy;",
        "Ŭ" to "&Ubreve;",
        "Û" to "&Ucirc",
        "Û" to "&Ucirc;",
        "У" to "&Ucy;",
        "Ű" to "&Udblac;",
        "𝔘" to "&Ufr;",
        "Ù" to "&Ugrave",
        "Ù" to "&Ugrave;",
        "Ū" to "&Umacr;",
        "_" to "&UnderBar;",
        "⏟" to "&UnderBrace;",
        "⎵" to "&UnderBracket;",
        "⏝" to "&UnderParenthesis;",
        "⋃" to "&Union;",
        "⊎" to "&UnionPlus;",
        "Ų" to "&Uogon;",
        "𝕌" to "&Uopf;",
        "↑" to "&UpArrow;",
        "⤒" to "&UpArrowBar;",
        "⇅" to "&UpArrowDownArrow;",
        "↕" to "&UpDownArrow;",
        "⥮" to "&UpEquilibrium;",
        "⊥" to "&UpTee;",
        "↥" to "&UpTeeArrow;",
        "⇑" to "&Uparrow;",
        "⇕" to "&Updownarrow;",
        "↖" to "&UpperLeftArrow;",
        "↗" to "&UpperRightArrow;",
        "ϒ" to "&Upsi;",
        "Υ" to "&Upsilon;",
        "Ů" to "&Uring;",
        "𝒰" to "&Uscr;",
        "Ũ" to "&Utilde;",
        "Ü" to "&Uuml",
        "Ü" to "&Uuml;",
        "⊫" to "&VDash;",
        "⫫" to "&Vbar;",
        "В" to "&Vcy;",
        "⊩" to "&Vdash;",
        "⫦" to "&Vdashl;",
        "⋁" to "&Vee;",
        "‖" to "&Verbar;",
        "‖" to "&Vert;",
        "∣" to "&VerticalBar;",
        "|" to "&VerticalLine;",
        "❘" to "&VerticalSeparator;",
        "≀" to "&VerticalTilde;",
        " " to "&VeryThinSpace;",
        "𝔙" to "&Vfr;",
        "𝕍" to "&Vopf;",
        "𝒱" to "&Vscr;",
        "⊪" to "&Vvdash;",
        "Ŵ" to "&Wcirc;",
        "⋀" to "&Wedge;",
        "𝔚" to "&Wfr;",
        "𝕎" to "&Wopf;",
        "𝒲" to "&Wscr;",
        "𝔛" to "&Xfr;",
        "Ξ" to "&Xi;",
        "𝕏" to "&Xopf;",
        "𝒳" to "&Xscr;",
        "Я" to "&YAcy;",
        "Ї" to "&YIcy;",
        "Ю" to "&YUcy;",
        "Ý" to "&Yacute",
        "Ý" to "&Yacute;",
        "Ŷ" to "&Ycirc;",
        "Ы" to "&Ycy;",
        "𝔜" to "&Yfr;",
        "𝕐" to "&Yopf;",
        "𝒴" to "&Yscr;",
        "Ÿ" to "&Yuml;",
        "Ж" to "&ZHcy;",
        "Ź" to "&Zacute;",
        "Ž" to "&Zcaron;",
        "З" to "&Zcy;",
        "Ż" to "&Zdot;",
        "​" to "&ZeroWidthSpace;",
        "Ζ" to "&Zeta;",
        "ℨ" to "&Zfr;",
        "ℤ" to "&Zopf;",
        "𝒵" to "&Zscr;",
        "á" to "&aacute",
        "á" to "&aacute;",
        "ă" to "&abreve;",
        "∾" to "&ac;",
        "∾̳" to "&acE;",
        "∿" to "&acd;",
        "â" to "&acirc",
        "â" to "&acirc;",
        "´" to "&acute",
        "´" to "&acute;",
        "а" to "&acy;",
        "æ" to "&aelig",
        "æ" to "&aelig;",
        "⁡" to "&af;",
        "𝔞" to "&afr;",
        "à" to "&agrave",
        "à" to "&agrave;",
        "ℵ" to "&alefsym;",
        "ℵ" to "&aleph;",
        "α" to "&alpha;",
        "ā" to "&amacr;",
        "⨿" to "&amalg;",
        "&" to "&amp",
        "&" to "&amp;",
        "∧" to "&and;",
        "⩕" to "&andand;",
        "⩜" to "&andd;",
        "⩘" to "&andslope;",
        "⩚" to "&andv;",
        "∠" to "&ang;",
        "⦤" to "&ange;",
        "∠" to "&angle;",
        "∡" to "&angmsd;",
        "⦨" to "&angmsdaa;",
        "⦩" to "&angmsdab;",
        "⦪" to "&angmsdac;",
        "⦫" to "&angmsdad;",
        "⦬" to "&angmsdae;",
        "⦭" to "&angmsdaf;",
        "⦮" to "&angmsdag;",
        "⦯" to "&angmsdah;",
        "∟" to "&angrt;",
        "⊾" to "&angrtvb;",
        "⦝" to "&angrtvbd;",
        "∢" to "&angsph;",
        "Å" to "&angst;",
        "⍼" to "&angzarr;",
        "ą" to "&aogon;",
        "𝕒" to "&aopf;",
        "≈" to "&ap;",
        "⩰" to "&apE;",
        "⩯" to "&apacir;",
        "≊" to "&ape;",
        "≋" to "&apid;",
        "'" to "&apos;",
        "≈" to "&approx;",
        "≊" to "&approxeq;",
        "å" to "&aring",
        "å" to "&aring;",
        "𝒶" to "&ascr;",
        "*" to "&ast;",
        "≈" to "&asymp;",
        "≍" to "&asympeq;",
        "ã" to "&atilde",
        "ã" to "&atilde;",
        "ä" to "&auml",
        "ä" to "&auml;",
        "∳" to "&awconint;",
        "⨑" to "&awint;",
        "⫭" to "&bNot;",
        "≌" to "&backcong;",
        "϶" to "&backepsilon;",
        "‵" to "&backprime;",
        "∽" to "&backsim;",
        "⋍" to "&backsimeq;",
        "⊽" to "&barvee;",
        "⌅" to "&barwed;",
        "⌅" to "&barwedge;",
        "⎵" to "&bbrk;",
        "⎶" to "&bbrktbrk;",
        "≌" to "&bcong;",
        "б" to "&bcy;",
        "„" to "&bdquo;",
        "∵" to "&becaus;",
        "∵" to "&because;",
        "⦰" to "&bemptyv;",
        "϶" to "&bepsi;",
        "ℬ" to "&bernou;",
        "β" to "&beta;",
        "ℶ" to "&beth;",
        "≬" to "&between;",
        "𝔟" to "&bfr;",
        "⋂" to "&bigcap;",
        "◯" to "&bigcirc;",
        "⋃" to "&bigcup;",
        "⨀" to "&bigodot;",
        "⨁" to "&bigoplus;",
        "⨂" to "&bigotimes;",
        "⨆" to "&bigsqcup;",
        "★" to "&bigstar;",
        "▽" to "&bigtriangledown;",
        "△" to "&bigtriangleup;",
        "⨄" to "&biguplus;",
        "⋁" to "&bigvee;",
        "⋀" to "&bigwedge;",
        "⤍" to "&bkarow;",
        "⧫" to "&blacklozenge;",
        "▪" to "&blacksquare;",
        "▴" to "&blacktriangle;",
        "▾" to "&blacktriangledown;",
        "◂" to "&blacktriangleleft;",
        "▸" to "&blacktriangleright;",
        "␣" to "&blank;",
        "▒" to "&blk12;",
        "░" to "&blk14;",
        "▓" to "&blk34;",
        "█" to "&block;",
        "=⃥" to "&bne;",
        "≡⃥" to "&bnequiv;",
        "⌐" to "&bnot;",
        "𝕓" to "&bopf;",
        "⊥" to "&bot;",
        "⊥" to "&bottom;",
        "⋈" to "&bowtie;",
        "╗" to "&boxDL;",
        "╔" to "&boxDR;",
        "╖" to "&boxDl;",
        "╓" to "&boxDr;",
        "═" to "&boxH;",
        "╦" to "&boxHD;",
        "╩" to "&boxHU;",
        "╤" to "&boxHd;",
        "╧" to "&boxHu;",
        "╝" to "&boxUL;",
        "╚" to "&boxUR;",
        "╜" to "&boxUl;",
        "╙" to "&boxUr;",
        "║" to "&boxV;",
        "╬" to "&boxVH;",
        "╣" to "&boxVL;",
        "╠" to "&boxVR;",
        "╫" to "&boxVh;",
        "╢" to "&boxVl;",
        "╟" to "&boxVr;",
        "⧉" to "&boxbox;",
        "╕" to "&boxdL;",
        "╒" to "&boxdR;",
        "┐" to "&boxdl;",
        "┌" to "&boxdr;",
        "─" to "&boxh;",
        "╥" to "&boxhD;",
        "╨" to "&boxhU;",
        "┬" to "&boxhd;",
        "┴" to "&boxhu;",
        "⊟" to "&boxminus;",
        "⊞" to "&boxplus;",
        "⊠" to "&boxtimes;",
        "╛" to "&boxuL;",
        "╘" to "&boxuR;",
        "┘" to "&boxul;",
        "└" to "&boxur;",
        "│" to "&boxv;",
        "╪" to "&boxvH;",
        "╡" to "&boxvL;",
        "╞" to "&boxvR;",
        "┼" to "&boxvh;",
        "┤" to "&boxvl;",
        "├" to "&boxvr;",
        "‵" to "&bprime;",
        "˘" to "&breve;",
        "¦" to "&brvbar",
        "¦" to "&brvbar;",
        "𝒷" to "&bscr;",
        "⁏" to "&bsemi;",
        "∽" to "&bsim;",
        "⋍" to "&bsime;",
        "\\" to "&bsol;",
        "⧅" to "&bsolb;",
        "⟈" to "&bsolhsub;",
        "•" to "&bull;",
        "•" to "&bullet;",
        "≎" to "&bump;",
        "⪮" to "&bumpE;",
        "≏" to "&bumpe;",
        "≏" to "&bumpeq;",
        "ć" to "&cacute;",
        "∩" to "&cap;",
        "⩄" to "&capand;",
        "⩉" to "&capbrcup;",
        "⩋" to "&capcap;",
        "⩇" to "&capcup;",
        "⩀" to "&capdot;",
        "∩︀" to "&caps;",
        "⁁" to "&caret;",
        "ˇ" to "&caron;",
        "⩍" to "&ccaps;",
        "č" to "&ccaron;",
        "ç" to "&ccedil",
        "ç" to "&ccedil;",
        "ĉ" to "&ccirc;",
        "⩌" to "&ccups;",
        "⩐" to "&ccupssm;",
        "ċ" to "&cdot;",
        "¸" to "&cedil",
        "¸" to "&cedil;",
        "⦲" to "&cemptyv;",
        "¢" to "&cent",
        "¢" to "&cent;",
        "·" to "&centerdot;",
        "𝔠" to "&cfr;",
        "ч" to "&chcy;",
        "✓" to "&check;",
        "✓" to "&checkmark;",
        "χ" to "&chi;",
        "○" to "&cir;",
        "⧃" to "&cirE;",
        "ˆ" to "&circ;",
        "≗" to "&circeq;",
        "↺" to "&circlearrowleft;",
        "↻" to "&circlearrowright;",
        "®" to "&circledR;",
        "Ⓢ" to "&circledS;",
        "⊛" to "&circledast;",
        "⊚" to "&circledcirc;",
        "⊝" to "&circleddash;",
        "≗" to "&cire;",
        "⨐" to "&cirfnint;",
        "⫯" to "&cirmid;",
        "⧂" to "&cirscir;",
        "♣" to "&clubs;",
        "♣" to "&clubsuit;",
        ":" to "&colon;",
        "≔" to "&colone;",
        "≔" to "&coloneq;",
        "," to "&comma;",
        "@" to "&commat;",
        "∁" to "&comp;",
        "∘" to "&compfn;",
        "∁" to "&complement;",
        "ℂ" to "&complexes;",
        "≅" to "&cong;",
        "⩭" to "&congdot;",
        "∮" to "&conint;",
        "𝕔" to "&copf;",
        "∐" to "&coprod;",
        "©" to "&copy",
        "©" to "&copy;",
        "℗" to "&copysr;",
        "↵" to "&crarr;",
        "✗" to "&cross;",
        "𝒸" to "&cscr;",
        "⫏" to "&csub;",
        "⫑" to "&csube;",
        "⫐" to "&csup;",
        "⫒" to "&csupe;",
        "⋯" to "&ctdot;",
        "⤸" to "&cudarrl;",
        "⤵" to "&cudarrr;",
        "⋞" to "&cuepr;",
        "⋟" to "&cuesc;",
        "↶" to "&cularr;",
        "⤽" to "&cularrp;",
        "∪" to "&cup;",
        "⩈" to "&cupbrcap;",
        "⩆" to "&cupcap;",
        "⩊" to "&cupcup;",
        "⊍" to "&cupdot;",
        "⩅" to "&cupor;",
        "∪︀" to "&cups;",
        "↷" to "&curarr;",
        "⤼" to "&curarrm;",
        "⋞" to "&curlyeqprec;",
        "⋟" to "&curlyeqsucc;",
        "⋎" to "&curlyvee;",
        "⋏" to "&curlywedge;",
        "¤" to "&curren",
        "¤" to "&curren;",
        "↶" to "&curvearrowleft;",
        "↷" to "&curvearrowright;",
        "⋎" to "&cuvee;",
        "⋏" to "&cuwed;",
        "∲" to "&cwconint;",
        "∱" to "&cwint;",
        "⌭" to "&cylcty;",
        "⇓" to "&dArr;",
        "⥥" to "&dHar;",
        "†" to "&dagger;",
        "ℸ" to "&daleth;",
        "↓" to "&darr;",
        "‐" to "&dash;",
        "⊣" to "&dashv;",
        "⤏" to "&dbkarow;",
        "˝" to "&dblac;",
        "ď" to "&dcaron;",
        "д" to "&dcy;",
        "ⅆ" to "&dd;",
        "‡" to "&ddagger;",
        "⇊" to "&ddarr;",
        "⩷" to "&ddotseq;",
        "°" to "&deg",
        "°" to "&deg;",
        "δ" to "&delta;",
        "⦱" to "&demptyv;",
        "⥿" to "&dfisht;",
        "𝔡" to "&dfr;",
        "⇃" to "&dharl;",
        "⇂" to "&dharr;",
        "⋄" to "&diam;",
        "⋄" to "&diamond;",
        "♦" to "&diamondsuit;",
        "♦" to "&diams;",
        "¨" to "&die;",
        "ϝ" to "&digamma;",
        "⋲" to "&disin;",
        "÷" to "&div;",
        "÷" to "&divide",
        "÷" to "&divide;",
        "⋇" to "&divideontimes;",
        "⋇" to "&divonx;",
        "ђ" to "&djcy;",
        "⌞" to "&dlcorn;",
        "⌍" to "&dlcrop;",
        "$" to "&dollar;",
        "𝕕" to "&dopf;",
        "˙" to "&dot;",
        "≐" to "&doteq;",
        "≑" to "&doteqdot;",
        "∸" to "&dotminus;",
        "∔" to "&dotplus;",
        "⊡" to "&dotsquare;",
        "⌆" to "&doublebarwedge;",
        "↓" to "&downarrow;",
        "⇊" to "&downdownarrows;",
        "⇃" to "&downharpoonleft;",
        "⇂" to "&downharpoonright;",
        "⤐" to "&drbkarow;",
        "⌟" to "&drcorn;",
        "⌌" to "&drcrop;",
        "𝒹" to "&dscr;",
        "ѕ" to "&dscy;",
        "⧶" to "&dsol;",
        "đ" to "&dstrok;",
        "⋱" to "&dtdot;",
        "▿" to "&dtri;",
        "▾" to "&dtrif;",
        "⇵" to "&duarr;",
        "⥯" to "&duhar;",
        "⦦" to "&dwangle;",
        "џ" to "&dzcy;",
        "⟿" to "&dzigrarr;",
        "⩷" to "&eDDot;",
        "≑" to "&eDot;",
        "é" to "&eacute",
        "é" to "&eacute;",
        "⩮" to "&easter;",
        "ě" to "&ecaron;",
        "≖" to "&ecir;",
        "ê" to "&ecirc",
        "ê" to "&ecirc;",
        "≕" to "&ecolon;",
        "э" to "&ecy;",
        "ė" to "&edot;",
        "ⅇ" to "&ee;",
        "≒" to "&efDot;",
        "𝔢" to "&efr;",
        "⪚" to "&eg;",
        "è" to "&egrave",
        "è" to "&egrave;",
        "⪖" to "&egs;",
        "⪘" to "&egsdot;",
        "⪙" to "&el;",
        "⏧" to "&elinters;",
        "ℓ" to "&ell;",
        "⪕" to "&els;",
        "⪗" to "&elsdot;",
        "ē" to "&emacr;",
        "∅" to "&empty;",
        "∅" to "&emptyset;",
        "∅" to "&emptyv;",
        " " to "&emsp13;",
        " " to "&emsp14;",
        " " to "&emsp;",
        "ŋ" to "&eng;",
        " " to "&ensp;",
        "ę" to "&eogon;",
        "𝕖" to "&eopf;",
        "⋕" to "&epar;",
        "⧣" to "&eparsl;",
        "⩱" to "&eplus;",
        "ε" to "&epsi;",
        "ε" to "&epsilon;",
        "ϵ" to "&epsiv;",
        "≖" to "&eqcirc;",
        "≕" to "&eqcolon;",
        "≂" to "&eqsim;",
        "⪖" to "&eqslantgtr;",
        "⪕" to "&eqslantless;",
        "=" to "&equals;",
        "≟" to "&equest;",
        "≡" to "&equiv;",
        "⩸" to "&equivDD;",
        "⧥" to "&eqvparsl;",
        "≓" to "&erDot;",
        "⥱" to "&erarr;",
        "ℯ" to "&escr;",
        "≐" to "&esdot;",
        "≂" to "&esim;",
        "η" to "&eta;",
        "ð" to "&eth",
        "ð" to "&eth;",
        "ë" to "&euml",
        "ë" to "&euml;",
        "€" to "&euro;",
        "!" to "&excl;",
        "∃" to "&exist;",
        "ℰ" to "&expectation;",
        "ⅇ" to "&exponentiale;",
        "≒" to "&fallingdotseq;",
        "ф" to "&fcy;",
        "♀" to "&female;",
        "ﬃ" to "&ffilig;",
        "ﬀ" to "&fflig;",
        "ﬄ" to "&ffllig;",
        "𝔣" to "&ffr;",
        "ﬁ" to "&filig;",
        "fj" to "&fjlig;",
        "♭" to "&flat;",
        "ﬂ" to "&fllig;",
        "▱" to "&fltns;",
        "ƒ" to "&fnof;",
        "𝕗" to "&fopf;",
        "∀" to "&forall;",
        "⋔" to "&fork;",
        "⫙" to "&forkv;",
        "⨍" to "&fpartint;",
        "½" to "&frac12",
        "½" to "&frac12;",
        "⅓" to "&frac13;",
        "¼" to "&frac14",
        "¼" to "&frac14;",
        "⅕" to "&frac15;",
        "⅙" to "&frac16;",
        "⅛" to "&frac18;",
        "⅔" to "&frac23;",
        "⅖" to "&frac25;",
        "¾" to "&frac34",
        "¾" to "&frac34;",
        "⅗" to "&frac35;",
        "⅜" to "&frac38;",
        "⅘" to "&frac45;",
        "⅚" to "&frac56;",
        "⅝" to "&frac58;",
        "⅞" to "&frac78;",
        "⁄" to "&frasl;",
        "⌢" to "&frown;",
        "𝒻" to "&fscr;",
        "≧" to "&gE;",
        "⪌" to "&gEl;",
        "ǵ" to "&gacute;",
        "γ" to "&gamma;",
        "ϝ" to "&gammad;",
        "⪆" to "&gap;",
        "ğ" to "&gbreve;",
        "ĝ" to "&gcirc;",
        "г" to "&gcy;",
        "ġ" to "&gdot;",
        "≥" to "&ge;",
        "⋛" to "&gel;",
        "≥" to "&geq;",
        "≧" to "&geqq;",
        "⩾" to "&geqslant;",
        "⩾" to "&ges;",
        "⪩" to "&gescc;",
        "⪀" to "&gesdot;",
        "⪂" to "&gesdoto;",
        "⪄" to "&gesdotol;",
        "⋛︀" to "&gesl;",
        "⪔" to "&gesles;",
        "𝔤" to "&gfr;",
        "≫" to "&gg;",
        "⋙" to "&ggg;",
        "ℷ" to "&gimel;",
        "ѓ" to "&gjcy;",
        "≷" to "&gl;",
        "⪒" to "&glE;",
        "⪥" to "&gla;",
        "⪤" to "&glj;",
        "≩" to "&gnE;",
        "⪊" to "&gnap;",
        "⪊" to "&gnapprox;",
        "⪈" to "&gne;",
        "⪈" to "&gneq;",
        "≩" to "&gneqq;",
        "⋧" to "&gnsim;",
        "𝕘" to "&gopf;",
        "`" to "&grave;",
        "ℊ" to "&gscr;",
        "≳" to "&gsim;",
        "⪎" to "&gsime;",
        "⪐" to "&gsiml;",
        ">" to "&gt",
        ">" to "&gt;",
        "⪧" to "&gtcc;",
        "⩺" to "&gtcir;",
        "⋗" to "&gtdot;",
        "⦕" to "&gtlPar;",
        "⩼" to "&gtquest;",
        "⪆" to "&gtrapprox;",
        "⥸" to "&gtrarr;",
        "⋗" to "&gtrdot;",
        "⋛" to "&gtreqless;",
        "⪌" to "&gtreqqless;",
        "≷" to "&gtrless;",
        "≳" to "&gtrsim;",
        "≩︀" to "&gvertneqq;",
        "≩︀" to "&gvnE;",
        "⇔" to "&hArr;",
        " " to "&hairsp;",
        "½" to "&half;",
        "ℋ" to "&hamilt;",
        "ъ" to "&hardcy;",
        "↔" to "&harr;",
        "⥈" to "&harrcir;",
        "↭" to "&harrw;",
        "ℏ" to "&hbar;",
        "ĥ" to "&hcirc;",
        "♥" to "&hearts;",
        "♥" to "&heartsuit;",
        "…" to "&hellip;",
        "⊹" to "&hercon;",
        "𝔥" to "&hfr;",
        "⤥" to "&hksearow;",
        "⤦" to "&hkswarow;",
        "⇿" to "&hoarr;",
        "∻" to "&homtht;",
        "↩" to "&hookleftarrow;",
        "↪" to "&hookrightarrow;",
        "𝕙" to "&hopf;",
        "―" to "&horbar;",
        "𝒽" to "&hscr;",
        "ℏ" to "&hslash;",
        "ħ" to "&hstrok;",
        "⁃" to "&hybull;",
        "‐" to "&hyphen;",
        "í" to "&iacute",
        "í" to "&iacute;",
        "⁣" to "&ic;",
        "î" to "&icirc",
        "î" to "&icirc;",
        "и" to "&icy;",
        "е" to "&iecy;",
        "¡" to "&iexcl",
        "¡" to "&iexcl;",
        "⇔" to "&iff;",
        "𝔦" to "&ifr;",
        "ì" to "&igrave",
        "ì" to "&igrave;",
        "ⅈ" to "&ii;",
        "⨌" to "&iiiint;",
        "∭" to "&iiint;",
        "⧜" to "&iinfin;",
        "℩" to "&iiota;",
        "ĳ" to "&ijlig;",
        "ī" to "&imacr;",
        "ℑ" to "&image;",
        "ℐ" to "&imagline;",
        "ℑ" to "&imagpart;",
        "ı" to "&imath;",
        "⊷" to "&imof;",
        "Ƶ" to "&imped;",
        "∈" to "&in;",
        "℅" to "&incare;",
        "∞" to "&infin;",
        "⧝" to "&infintie;",
        "ı" to "&inodot;",
        "∫" to "&int;",
        "⊺" to "&intcal;",
        "ℤ" to "&integers;",
        "⊺" to "&intercal;",
        "⨗" to "&intlarhk;",
        "⨼" to "&intprod;",
        "ё" to "&iocy;",
        "į" to "&iogon;",
        "𝕚" to "&iopf;",
        "ι" to "&iota;",
        "⨼" to "&iprod;",
        "¿" to "&iquest",
        "¿" to "&iquest;",
        "𝒾" to "&iscr;",
        "∈" to "&isin;",
        "⋹" to "&isinE;",
        "⋵" to "&isindot;",
        "⋴" to "&isins;",
        "⋳" to "&isinsv;",
        "∈" to "&isinv;",
        "⁢" to "&it;",
        "ĩ" to "&itilde;",
        "і" to "&iukcy;",
        "ï" to "&iuml",
        "ï" to "&iuml;",
        "ĵ" to "&jcirc;",
        "й" to "&jcy;",
        "𝔧" to "&jfr;",
        "ȷ" to "&jmath;",
        "𝕛" to "&jopf;",
        "𝒿" to "&jscr;",
        "ј" to "&jsercy;",
        "є" to "&jukcy;",
        "κ" to "&kappa;",
        "ϰ" to "&kappav;",
        "ķ" to "&kcedil;",
        "к" to "&kcy;",
        "𝔨" to "&kfr;",
        "ĸ" to "&kgreen;",
        "х" to "&khcy;",
        "ќ" to "&kjcy;",
        "𝕜" to "&kopf;",
        "𝓀" to "&kscr;",
        "⇚" to "&lAarr;",
        "⇐" to "&lArr;",
        "⤛" to "&lAtail;",
        "⤎" to "&lBarr;",
        "≦" to "&lE;",
        "⪋" to "&lEg;",
        "⥢" to "&lHar;",
        "ĺ" to "&lacute;",
        "⦴" to "&laemptyv;",
        "ℒ" to "&lagran;",
        "λ" to "&lambda;",
        "⟨" to "&lang;",
        "⦑" to "&langd;",
        "⟨" to "&langle;",
        "⪅" to "&lap;",
        "«" to "&laquo",
        "«" to "&laquo;",
        "←" to "&larr;",
        "⇤" to "&larrb;",
        "⤟" to "&larrbfs;",
        "⤝" to "&larrfs;",
        "↩" to "&larrhk;",
        "↫" to "&larrlp;",
        "⤹" to "&larrpl;",
        "⥳" to "&larrsim;",
        "↢" to "&larrtl;",
        "⪫" to "&lat;",
        "⤙" to "&latail;",
        "⪭" to "&late;",
        "⪭︀" to "&lates;",
        "⤌" to "&lbarr;",
        "❲" to "&lbbrk;",
        "{" to "&lbrace;",
        "[" to "&lbrack;",
        "⦋" to "&lbrke;",
        "⦏" to "&lbrksld;",
        "⦍" to "&lbrkslu;",
        "ľ" to "&lcaron;",
        "ļ" to "&lcedil;",
        "⌈" to "&lceil;",
        "{" to "&lcub;",
        "л" to "&lcy;",
        "⤶" to "&ldca;",
        "“" to "&ldquo;",
        "„" to "&ldquor;",
        "⥧" to "&ldrdhar;",
        "⥋" to "&ldrushar;",
        "↲" to "&ldsh;",
        "≤" to "&le;",
        "←" to "&leftarrow;",
        "↢" to "&leftarrowtail;",
        "↽" to "&leftharpoondown;",
        "↼" to "&leftharpoonup;",
        "⇇" to "&leftleftarrows;",
        "↔" to "&leftrightarrow;",
        "⇆" to "&leftrightarrows;",
        "⇋" to "&leftrightharpoons;",
        "↭" to "&leftrightsquigarrow;",
        "⋋" to "&leftthreetimes;",
        "⋚" to "&leg;",
        "≤" to "&leq;",
        "≦" to "&leqq;",
        "⩽" to "&leqslant;",
        "⩽" to "&les;",
        "⪨" to "&lescc;",
        "⩿" to "&lesdot;",
        "⪁" to "&lesdoto;",
        "⪃" to "&lesdotor;",
        "⋚︀" to "&lesg;",
        "⪓" to "&lesges;",
        "⪅" to "&lessapprox;",
        "⋖" to "&lessdot;",
        "⋚" to "&lesseqgtr;",
        "⪋" to "&lesseqqgtr;",
        "≶" to "&lessgtr;",
        "≲" to "&lesssim;",
        "⥼" to "&lfisht;",
        "⌊" to "&lfloor;",
        "𝔩" to "&lfr;",
        "≶" to "&lg;",
        "⪑" to "&lgE;",
        "↽" to "&lhard;",
        "↼" to "&lharu;",
        "⥪" to "&lharul;",
        "▄" to "&lhblk;",
        "љ" to "&ljcy;",
        "≪" to "&ll;",
        "⇇" to "&llarr;",
        "⌞" to "&llcorner;",
        "⥫" to "&llhard;",
        "◺" to "&lltri;",
        "ŀ" to "&lmidot;",
        "⎰" to "&lmoust;",
        "⎰" to "&lmoustache;",
        "≨" to "&lnE;",
        "⪉" to "&lnap;",
        "⪉" to "&lnapprox;",
        "⪇" to "&lne;",
        "⪇" to "&lneq;",
        "≨" to "&lneqq;",
        "⋦" to "&lnsim;",
        "⟬" to "&loang;",
        "⇽" to "&loarr;",
        "⟦" to "&lobrk;",
        "⟵" to "&longleftarrow;",
        "⟷" to "&longleftrightarrow;",
        "⟼" to "&longmapsto;",
        "⟶" to "&longrightarrow;",
        "↫" to "&looparrowleft;",
        "↬" to "&looparrowright;",
        "⦅" to "&lopar;",
        "𝕝" to "&lopf;",
        "⨭" to "&loplus;",
        "⨴" to "&lotimes;",
        "∗" to "&lowast;",
        "_" to "&lowbar;",
        "◊" to "&loz;",
        "◊" to "&lozenge;",
        "⧫" to "&lozf;",
        "(" to "&lpar;",
        "⦓" to "&lparlt;",
        "⇆" to "&lrarr;",
        "⌟" to "&lrcorner;",
        "⇋" to "&lrhar;",
        "⥭" to "&lrhard;",
        "‎" to "&lrm;",
        "⊿" to "&lrtri;",
        "‹" to "&lsaquo;",
        "𝓁" to "&lscr;",
        "↰" to "&lsh;",
        "≲" to "&lsim;",
        "⪍" to "&lsime;",
        "⪏" to "&lsimg;",
        "[" to "&lsqb;",
        "‘" to "&lsquo;",
        "‚" to "&lsquor;",
        "ł" to "&lstrok;",
        "<" to "&lt",
        "<" to "&lt;",
        "⪦" to "&ltcc;",
        "⩹" to "&ltcir;",
        "⋖" to "&ltdot;",
        "⋋" to "&lthree;",
        "⋉" to "&ltimes;",
        "⥶" to "&ltlarr;",
        "⩻" to "&ltquest;",
        "⦖" to "&ltrPar;",
        "◃" to "&ltri;",
        "⊴" to "&ltrie;",
        "◂" to "&ltrif;",
        "⥊" to "&lurdshar;",
        "⥦" to "&luruhar;",
        "≨︀" to "&lvertneqq;",
        "≨︀" to "&lvnE;",
        "∺" to "&mDDot;",
        "¯" to "&macr",
        "¯" to "&macr;",
        "♂" to "&male;",
        "✠" to "&malt;",
        "✠" to "&maltese;",
        "↦" to "&map;",
        "↦" to "&mapsto;",
        "↧" to "&mapstodown;",
        "↤" to "&mapstoleft;",
        "↥" to "&mapstoup;",
        "▮" to "&marker;",
        "⨩" to "&mcomma;",
        "м" to "&mcy;",
        "—" to "&mdash;",
        "∡" to "&measuredangle;",
        "𝔪" to "&mfr;",
        "℧" to "&mho;",
        "µ" to "&micro",
        "µ" to "&micro;",
        "∣" to "&mid;",
        "*" to "&midast;",
        "⫰" to "&midcir;",
        "·" to "&middot",
        "·" to "&middot;",
        "−" to "&minus;",
        "⊟" to "&minusb;",
        "∸" to "&minusd;",
        "⨪" to "&minusdu;",
        "⫛" to "&mlcp;",
        "…" to "&mldr;",
        "∓" to "&mnplus;",
        "⊧" to "&models;",
        "𝕞" to "&mopf;",
        "∓" to "&mp;",
        "𝓂" to "&mscr;",
        "∾" to "&mstpos;",
        "μ" to "&mu;",
        "⊸" to "&multimap;",
        "⊸" to "&mumap;",
        "⋙̸" to "&nGg;",
        "≫⃒" to "&nGt;",
        "≫̸" to "&nGtv;",
        "⇍" to "&nLeftarrow;",
        "⇎" to "&nLeftrightarrow;",
        "⋘̸" to "&nLl;",
        "≪⃒" to "&nLt;",
        "≪̸" to "&nLtv;",
        "⇏" to "&nRightarrow;",
        "⊯" to "&nVDash;",
        "⊮" to "&nVdash;",
        "∇" to "&nabla;",
        "ń" to "&nacute;",
        "∠⃒" to "&nang;",
        "≉" to "&nap;",
        "⩰̸" to "&napE;",
        "≋̸" to "&napid;",
        "ŉ" to "&napos;",
        "≉" to "&napprox;",
        "♮" to "&natur;",
        "♮" to "&natural;",
        "ℕ" to "&naturals;",
        " " to "&nbsp",
        " " to "&nbsp;",
        "≎̸" to "&nbump;",
        "≏̸" to "&nbumpe;",
        "⩃" to "&ncap;",
        "ň" to "&ncaron;",
        "ņ" to "&ncedil;",
        "≇" to "&ncong;",
        "⩭̸" to "&ncongdot;",
        "⩂" to "&ncup;",
        "н" to "&ncy;",
        "–" to "&ndash;",
        "≠" to "&ne;",
        "⇗" to "&neArr;",
        "⤤" to "&nearhk;",
        "↗" to "&nearr;",
        "↗" to "&nearrow;",
        "≐̸" to "&nedot;",
        "≢" to "&nequiv;",
        "⤨" to "&nesear;",
        "≂̸" to "&nesim;",
        "∄" to "&nexist;",
        "∄" to "&nexists;",
        "𝔫" to "&nfr;",
        "≧̸" to "&ngE;",
        "≱" to "&nge;",
        "≱" to "&ngeq;",
        "≧̸" to "&ngeqq;",
        "⩾̸" to "&ngeqslant;",
        "⩾̸" to "&nges;",
        "≵" to "&ngsim;",
        "≯" to "&ngt;",
        "≯" to "&ngtr;",
        "⇎" to "&nhArr;",
        "↮" to "&nharr;",
        "⫲" to "&nhpar;",
        "∋" to "&ni;",
        "⋼" to "&nis;",
        "⋺" to "&nisd;",
        "∋" to "&niv;",
        "њ" to "&njcy;",
        "⇍" to "&nlArr;",
        "≦̸" to "&nlE;",
        "↚" to "&nlarr;",
        "‥" to "&nldr;",
        "≰" to "&nle;",
        "↚" to "&nleftarrow;",
        "↮" to "&nleftrightarrow;",
        "≰" to "&nleq;",
        "≦̸" to "&nleqq;",
        "⩽̸" to "&nleqslant;",
        "⩽̸" to "&nles;",
        "≮" to "&nless;",
        "≴" to "&nlsim;",
        "≮" to "&nlt;",
        "⋪" to "&nltri;",
        "⋬" to "&nltrie;",
        "∤" to "&nmid;",
        "𝕟" to "&nopf;",
        "¬" to "&not",
        "¬" to "&not;",
        "∉" to "&notin;",
        "⋹̸" to "&notinE;",
        "⋵̸" to "&notindot;",
        "∉" to "&notinva;",
        "⋷" to "&notinvb;",
        "⋶" to "&notinvc;",
        "∌" to "&notni;",
        "∌" to "&notniva;",
        "⋾" to "&notnivb;",
        "⋽" to "&notnivc;",
        "∦" to "&npar;",
        "∦" to "&nparallel;",
        "⫽⃥" to "&nparsl;",
        "∂̸" to "&npart;",
        "⨔" to "&npolint;",
        "⊀" to "&npr;",
        "⋠" to "&nprcue;",
        "⪯̸" to "&npre;",
        "⊀" to "&nprec;",
        "⪯̸" to "&npreceq;",
        "⇏" to "&nrArr;",
        "↛" to "&nrarr;",
        "⤳̸" to "&nrarrc;",
        "↝̸" to "&nrarrw;",
        "↛" to "&nrightarrow;",
        "⋫" to "&nrtri;",
        "⋭" to "&nrtrie;",
        "⊁" to "&nsc;",
        "⋡" to "&nsccue;",
        "⪰̸" to "&nsce;",
        "𝓃" to "&nscr;",
        "∤" to "&nshortmid;",
        "∦" to "&nshortparallel;",
        "≁" to "&nsim;",
        "≄" to "&nsime;",
        "≄" to "&nsimeq;",
        "∤" to "&nsmid;",
        "∦" to "&nspar;",
        "⋢" to "&nsqsube;",
        "⋣" to "&nsqsupe;",
        "⊄" to "&nsub;",
        "⫅̸" to "&nsubE;",
        "⊈" to "&nsube;",
        "⊂⃒" to "&nsubset;",
        "⊈" to "&nsubseteq;",
        "⫅̸" to "&nsubseteqq;",
        "⊁" to "&nsucc;",
        "⪰̸" to "&nsucceq;",
        "⊅" to "&nsup;",
        "⫆̸" to "&nsupE;",
        "⊉" to "&nsupe;",
        "⊃⃒" to "&nsupset;",
        "⊉" to "&nsupseteq;",
        "⫆̸" to "&nsupseteqq;",
        "≹" to "&ntgl;",
        "ñ" to "&ntilde",
        "ñ" to "&ntilde;",
        "≸" to "&ntlg;",
        "⋪" to "&ntriangleleft;",
        "⋬" to "&ntrianglelefteq;",
        "⋫" to "&ntriangleright;",
        "⋭" to "&ntrianglerighteq;",
        "ν" to "&nu;",
        "#" to "&num;",
        "№" to "&numero;",
        " " to "&numsp;",
        "⊭" to "&nvDash;",
        "⤄" to "&nvHarr;",
        "≍⃒" to "&nvap;",
        "⊬" to "&nvdash;",
        "≥⃒" to "&nvge;",
        ">⃒" to "&nvgt;",
        "⧞" to "&nvinfin;",
        "⤂" to "&nvlArr;",
        "≤⃒" to "&nvle;",
        "<⃒" to "&nvlt;",
        "⊴⃒" to "&nvltrie;",
        "⤃" to "&nvrArr;",
        "⊵⃒" to "&nvrtrie;",
        "∼⃒" to "&nvsim;",
        "⇖" to "&nwArr;",
        "⤣" to "&nwarhk;",
        "↖" to "&nwarr;",
        "↖" to "&nwarrow;",
        "⤧" to "&nwnear;",
        "Ⓢ" to "&oS;",
        "ó" to "&oacute",
        "ó" to "&oacute;",
        "⊛" to "&oast;",
        "⊚" to "&ocir;",
        "ô" to "&ocirc",
        "ô" to "&ocirc;",
        "о" to "&ocy;",
        "⊝" to "&odash;",
        "ő" to "&odblac;",
        "⨸" to "&odiv;",
        "⊙" to "&odot;",
        "⦼" to "&odsold;",
        "œ" to "&oelig;",
        "⦿" to "&ofcir;",
        "𝔬" to "&ofr;",
        "˛" to "&ogon;",
        "ò" to "&ograve",
        "ò" to "&ograve;",
        "⧁" to "&ogt;",
        "⦵" to "&ohbar;",
        "Ω" to "&ohm;",
        "∮" to "&oint;",
        "↺" to "&olarr;",
        "⦾" to "&olcir;",
        "⦻" to "&olcross;",
        "‾" to "&oline;",
        "⧀" to "&olt;",
        "ō" to "&omacr;",
        "ω" to "&omega;",
        "ο" to "&omicron;",
        "⦶" to "&omid;",
        "⊖" to "&ominus;",
        "𝕠" to "&oopf;",
        "⦷" to "&opar;",
        "⦹" to "&operp;",
        "⊕" to "&oplus;",
        "∨" to "&or;",
        "↻" to "&orarr;",
        "⩝" to "&ord;",
        "ℴ" to "&order;",
        "ℴ" to "&orderof;",
        "ª" to "&ordf",
        "ª" to "&ordf;",
        "º" to "&ordm",
        "º" to "&ordm;",
        "⊶" to "&origof;",
        "⩖" to "&oror;",
        "⩗" to "&orslope;",
        "⩛" to "&orv;",
        "ℴ" to "&oscr;",
        "ø" to "&oslash",
        "ø" to "&oslash;",
        "⊘" to "&osol;",
        "õ" to "&otilde",
        "õ" to "&otilde;",
        "⊗" to "&otimes;",
        "⨶" to "&otimesas;",
        "ö" to "&ouml",
        "ö" to "&ouml;",
        "⌽" to "&ovbar;",
        "∥" to "&par;",
        "¶" to "&para",
        "¶" to "&para;",
        "∥" to "&parallel;",
        "⫳" to "&parsim;",
        "⫽" to "&parsl;",
        "∂" to "&part;",
        "п" to "&pcy;",
        "%" to "&percnt;",
        "." to "&period;",
        "‰" to "&permil;",
        "⊥" to "&perp;",
        "‱" to "&pertenk;",
        "𝔭" to "&pfr;",
        "φ" to "&phi;",
        "ϕ" to "&phiv;",
        "ℳ" to "&phmmat;",
        "☎" to "&phone;",
        "π" to "&pi;",
        "⋔" to "&pitchfork;",
        "ϖ" to "&piv;",
        "ℏ" to "&planck;",
        "ℎ" to "&planckh;",
        "ℏ" to "&plankv;",
        "+" to "&plus;",
        "⨣" to "&plusacir;",
        "⊞" to "&plusb;",
        "⨢" to "&pluscir;",
        "∔" to "&plusdo;",
        "⨥" to "&plusdu;",
        "⩲" to "&pluse;",
        "±" to "&plusmn",
        "±" to "&plusmn;",
        "⨦" to "&plussim;",
        "⨧" to "&plustwo;",
        "±" to "&pm;",
        "⨕" to "&pointint;",
        "𝕡" to "&popf;",
        "£" to "&pound",
        "£" to "&pound;",
        "≺" to "&pr;",
        "⪳" to "&prE;",
        "⪷" to "&prap;",
        "≼" to "&prcue;",
        "⪯" to "&pre;",
        "≺" to "&prec;",
        "⪷" to "&precapprox;",
        "≼" to "&preccurlyeq;",
        "⪯" to "&preceq;",
        "⪹" to "&precnapprox;",
        "⪵" to "&precneqq;",
        "⋨" to "&precnsim;",
        "≾" to "&precsim;",
        "′" to "&prime;",
        "ℙ" to "&primes;",
        "⪵" to "&prnE;",
        "⪹" to "&prnap;",
        "⋨" to "&prnsim;",
        "∏" to "&prod;",
        "⌮" to "&profalar;",
        "⌒" to "&profline;",
        "⌓" to "&profsurf;",
        "∝" to "&prop;",
        "∝" to "&propto;",
        "≾" to "&prsim;",
        "⊰" to "&prurel;",
        "𝓅" to "&pscr;",
        "ψ" to "&psi;",
        " " to "&puncsp;",
        "𝔮" to "&qfr;",
        "⨌" to "&qint;",
        "𝕢" to "&qopf;",
        "⁗" to "&qprime;",
        "𝓆" to "&qscr;",
        "ℍ" to "&quaternions;",
        "⨖" to "&quatint;",
        "?" to "&quest;",
        "≟" to "&questeq;",
        "\"" to "&quot",
        "\"" to "&quot;",
        "⇛" to "&rAarr;",
        "⇒" to "&rArr;",
        "⤜" to "&rAtail;",
        "⤏" to "&rBarr;",
        "⥤" to "&rHar;",
        "∽̱" to "&race;",
        "ŕ" to "&racute;",
        "√" to "&radic;",
        "⦳" to "&raemptyv;",
        "⟩" to "&rang;",
        "⦒" to "&rangd;",
        "⦥" to "&range;",
        "⟩" to "&rangle;",
        "»" to "&raquo",
        "»" to "&raquo;",
        "→" to "&rarr;",
        "⥵" to "&rarrap;",
        "⇥" to "&rarrb;",
        "⤠" to "&rarrbfs;",
        "⤳" to "&rarrc;",
        "⤞" to "&rarrfs;",
        "↪" to "&rarrhk;",
        "↬" to "&rarrlp;",
        "⥅" to "&rarrpl;",
        "⥴" to "&rarrsim;",
        "↣" to "&rarrtl;",
        "↝" to "&rarrw;",
        "⤚" to "&ratail;",
        "∶" to "&ratio;",
        "ℚ" to "&rationals;",
        "⤍" to "&rbarr;",
        "❳" to "&rbbrk;",
        "}" to "&rbrace;",
        "]" to "&rbrack;",
        "⦌" to "&rbrke;",
        "⦎" to "&rbrksld;",
        "⦐" to "&rbrkslu;",
        "ř" to "&rcaron;",
        "ŗ" to "&rcedil;",
        "⌉" to "&rceil;",
        "}" to "&rcub;",
        "р" to "&rcy;",
        "⤷" to "&rdca;",
        "⥩" to "&rdldhar;",
        "”" to "&rdquo;",
        "”" to "&rdquor;",
        "↳" to "&rdsh;",
        "ℜ" to "&real;",
        "ℛ" to "&realine;",
        "ℜ" to "&realpart;",
        "ℝ" to "&reals;",
        "▭" to "&rect;",
        "®" to "&reg",
        "®" to "&reg;",
        "⥽" to "&rfisht;",
        "⌋" to "&rfloor;",
        "𝔯" to "&rfr;",
        "⇁" to "&rhard;",
        "⇀" to "&rharu;",
        "⥬" to "&rharul;",
        "ρ" to "&rho;",
        "ϱ" to "&rhov;",
        "→" to "&rightarrow;",
        "↣" to "&rightarrowtail;",
        "⇁" to "&rightharpoondown;",
        "⇀" to "&rightharpoonup;",
        "⇄" to "&rightleftarrows;",
        "⇌" to "&rightleftharpoons;",
        "⇉" to "&rightrightarrows;",
        "↝" to "&rightsquigarrow;",
        "⋌" to "&rightthreetimes;",
        "˚" to "&ring;",
        "≓" to "&risingdotseq;",
        "⇄" to "&rlarr;",
        "⇌" to "&rlhar;",
        "‏" to "&rlm;",
        "⎱" to "&rmoust;",
        "⎱" to "&rmoustache;",
        "⫮" to "&rnmid;",
        "⟭" to "&roang;",
        "⇾" to "&roarr;",
        "⟧" to "&robrk;",
        "⦆" to "&ropar;",
        "𝕣" to "&ropf;",
        "⨮" to "&roplus;",
        "⨵" to "&rotimes;",
        "," to "&rpar;",
        "⦔" to "&rpargt;",
        "⨒" to "&rppolint;",
        "⇉" to "&rrarr;",
        "›" to "&rsaquo;",
        "𝓇" to "&rscr;",
        "↱" to "&rsh;",
        "]" to "&rsqb;",
        "’" to "&rsquo;",
        "’" to "&rsquor;",
        "⋌" to "&rthree;",
        "⋊" to "&rtimes;",
        "▹" to "&rtri;",
        "⊵" to "&rtrie;",
        "▸" to "&rtrif;",
        "⧎" to "&rtriltri;",
        "⥨" to "&ruluhar;",
        "℞" to "&rx;",
        "ś" to "&sacute;",
        "‚" to "&sbquo;",
        "≻" to "&sc;",
        "⪴" to "&scE;",
        "⪸" to "&scap;",
        "š" to "&scaron;",
        "≽" to "&sccue;",
        "⪰" to "&sce;",
        "ş" to "&scedil;",
        "ŝ" to "&scirc;",
        "⪶" to "&scnE;",
        "⪺" to "&scnap;",
        "⋩" to "&scnsim;",
        "⨓" to "&scpolint;",
        "≿" to "&scsim;",
        "с" to "&scy;",
        "⋅" to "&sdot;",
        "⊡" to "&sdotb;",
        "⩦" to "&sdote;",
        "⇘" to "&seArr;",
        "⤥" to "&searhk;",
        "↘" to "&searr;",
        "↘" to "&searrow;",
        "§" to "&sect",
        "§" to "&sect;",
        ";" to "&semi;",
        "⤩" to "&seswar;",
        "∖" to "&setminus;",
        "∖" to "&setmn;",
        "✶" to "&sext;",
        "𝔰" to "&sfr;",
        "⌢" to "&sfrown;",
        "♯" to "&sharp;",
        "щ" to "&shchcy;",
        "ш" to "&shcy;",
        "∣" to "&shortmid;",
        "∥" to "&shortparallel;",
        "­" to "&shy",
        "­" to "&shy;",
        "σ" to "&sigma;",
        "ς" to "&sigmaf;",
        "ς" to "&sigmav;",
        "∼" to "&sim;",
        "⩪" to "&simdot;",
        "≃" to "&sime;",
        "≃" to "&simeq;",
        "⪞" to "&simg;",
        "⪠" to "&simgE;",
        "⪝" to "&siml;",
        "⪟" to "&simlE;",
        "≆" to "&simne;",
        "⨤" to "&simplus;",
        "⥲" to "&simrarr;",
        "←" to "&slarr;",
        "∖" to "&smallsetminus;",
        "⨳" to "&smashp;",
        "⧤" to "&smeparsl;",
        "∣" to "&smid;",
        "⌣" to "&smile;",
        "⪪" to "&smt;",
        "⪬" to "&smte;",
        "⪬︀" to "&smtes;",
        "ь" to "&softcy;",
        "/" to "&sol;",
        "⧄" to "&solb;",
        "⌿" to "&solbar;",
        "𝕤" to "&sopf;",
        "♠" to "&spades;",
        "♠" to "&spadesuit;",
        "∥" to "&spar;",
        "⊓" to "&sqcap;",
        "⊓︀" to "&sqcaps;",
        "⊔" to "&sqcup;",
        "⊔︀" to "&sqcups;",
        "⊏" to "&sqsub;",
        "⊑" to "&sqsube;",
        "⊏" to "&sqsubset;",
        "⊑" to "&sqsubseteq;",
        "⊐" to "&sqsup;",
        "⊒" to "&sqsupe;",
        "⊐" to "&sqsupset;",
        "⊒" to "&sqsupseteq;",
        "□" to "&squ;",
        "□" to "&square;",
        "▪" to "&squarf;",
        "▪" to "&squf;",
        "→" to "&srarr;",
        "𝓈" to "&sscr;",
        "∖" to "&ssetmn;",
        "⌣" to "&ssmile;",
        "⋆" to "&sstarf;",
        "☆" to "&star;",
        "★" to "&starf;",
        "ϵ" to "&straightepsilon;",
        "ϕ" to "&straightphi;",
        "¯" to "&strns;",
        "⊂" to "&sub;",
        "⫅" to "&subE;",
        "⪽" to "&subdot;",
        "⊆" to "&sube;",
        "⫃" to "&subedot;",
        "⫁" to "&submult;",
        "⫋" to "&subnE;",
        "⊊" to "&subne;",
        "⪿" to "&subplus;",
        "⥹" to "&subrarr;",
        "⊂" to "&subset;",
        "⊆" to "&subseteq;",
        "⫅" to "&subseteqq;",
        "⊊" to "&subsetneq;",
        "⫋" to "&subsetneqq;",
        "⫇" to "&subsim;",
        "⫕" to "&subsub;",
        "⫓" to "&subsup;",
        "≻" to "&succ;",
        "⪸" to "&succapprox;",
        "≽" to "&succcurlyeq;",
        "⪰" to "&succeq;",
        "⪺" to "&succnapprox;",
        "⪶" to "&succneqq;",
        "⋩" to "&succnsim;",
        "≿" to "&succsim;",
        "∑" to "&sum;",
        "♪" to "&sung;",
        "¹" to "&sup1",
        "¹" to "&sup1;",
        "²" to "&sup2",
        "²" to "&sup2;",
        "³" to "&sup3",
        "³" to "&sup3;",
        "⊃" to "&sup;",
        "⫆" to "&supE;",
        "⪾" to "&supdot;",
        "⫘" to "&supdsub;",
        "⊇" to "&supe;",
        "⫄" to "&supedot;",
        "⟉" to "&suphsol;",
        "⫗" to "&suphsub;",
        "⥻" to "&suplarr;",
        "⫂" to "&supmult;",
        "⫌" to "&supnE;",
        "⊋" to "&supne;",
        "⫀" to "&supplus;",
        "⊃" to "&supset;",
        "⊇" to "&supseteq;",
        "⫆" to "&supseteqq;",
        "⊋" to "&supsetneq;",
        "⫌" to "&supsetneqq;",
        "⫈" to "&supsim;",
        "⫔" to "&supsub;",
        "⫖" to "&supsup;",
        "⇙" to "&swArr;",
        "⤦" to "&swarhk;",
        "↙" to "&swarr;",
        "↙" to "&swarrow;",
        "⤪" to "&swnwar;",
        "ß" to "&szlig",
        "ß" to "&szlig;",
        "⌖" to "&target;",
        "τ" to "&tau;",
        "⎴" to "&tbrk;",
        "ť" to "&tcaron;",
        "ţ" to "&tcedil;",
        "т" to "&tcy;",
        "⃛" to "&tdot;",
        "⌕" to "&telrec;",
        "𝔱" to "&tfr;",
        "∴" to "&there4;",
        "∴" to "&therefore;",
        "θ" to "&theta;",
        "ϑ" to "&thetasym;",
        "ϑ" to "&thetav;",
        "≈" to "&thickapprox;",
        "∼" to "&thicksim;",
        " " to "&thinsp;",
        "≈" to "&thkap;",
        "∼" to "&thksim;",
        "þ" to "&thorn",
        "þ" to "&thorn;",
        "˜" to "&tilde;",
        "×" to "&times",
        "×" to "&times;",
        "⊠" to "&timesb;",
        "⨱" to "&timesbar;",
        "⨰" to "&timesd;",
        "∭" to "&tint;",
        "⤨" to "&toea;",
        "⊤" to "&top;",
        "⌶" to "&topbot;",
        "⫱" to "&topcir;",
        "𝕥" to "&topf;",
        "⫚" to "&topfork;",
        "⤩" to "&tosa;",
        "‴" to "&tprime;",
        "™" to "&trade;",
        "▵" to "&triangle;",
        "▿" to "&triangledown;",
        "◃" to "&triangleleft;",
        "⊴" to "&trianglelefteq;",
        "≜" to "&triangleq;",
        "▹" to "&triangleright;",
        "⊵" to "&trianglerighteq;",
        "◬" to "&tridot;",
        "≜" to "&trie;",
        "⨺" to "&triminus;",
        "⨹" to "&triplus;",
        "⧍" to "&trisb;",
        "⨻" to "&tritime;",
        "⏢" to "&trpezium;",
        "𝓉" to "&tscr;",
        "ц" to "&tscy;",
        "ћ" to "&tshcy;",
        "ŧ" to "&tstrok;",
        "≬" to "&twixt;",
        "↞" to "&twoheadleftarrow;",
        "↠" to "&twoheadrightarrow;",
        "⇑" to "&uArr;",
        "⥣" to "&uHar;",
        "ú" to "&uacute",
        "ú" to "&uacute;",
        "↑" to "&uarr;",
        "ў" to "&ubrcy;",
        "ŭ" to "&ubreve;",
        "û" to "&ucirc",
        "û" to "&ucirc;",
        "у" to "&ucy;",
        "⇅" to "&udarr;",
        "ű" to "&udblac;",
        "⥮" to "&udhar;",
        "⥾" to "&ufisht;",
        "𝔲" to "&ufr;",
        "ù" to "&ugrave",
        "ù" to "&ugrave;",
        "↿" to "&uharl;",
        "↾" to "&uharr;",
        "▀" to "&uhblk;",
        "⌜" to "&ulcorn;",
        "⌜" to "&ulcorner;",
        "⌏" to "&ulcrop;",
        "◸" to "&ultri;",
        "ū" to "&umacr;",
        "¨" to "&uml",
        "¨" to "&uml;",
        "ų" to "&uogon;",
        "𝕦" to "&uopf;",
        "↑" to "&uparrow;",
        "↕" to "&updownarrow;",
        "↿" to "&upharpoonleft;",
        "↾" to "&upharpoonright;",
        "⊎" to "&uplus;",
        "υ" to "&upsi;",
        "ϒ" to "&upsih;",
        "υ" to "&upsilon;",
        "⇈" to "&upuparrows;",
        "⌝" to "&urcorn;",
        "⌝" to "&urcorner;",
        "⌎" to "&urcrop;",
        "ů" to "&uring;",
        "◹" to "&urtri;",
        "𝓊" to "&uscr;",
        "⋰" to "&utdot;",
        "ũ" to "&utilde;",
        "▵" to "&utri;",
        "▴" to "&utrif;",
        "⇈" to "&uuarr;",
        "ü" to "&uuml",
        "ü" to "&uuml;",
        "⦧" to "&uwangle;",
        "⇕" to "&vArr;",
        "⫨" to "&vBar;",
        "⫩" to "&vBarv;",
        "⊨" to "&vDash;",
        "⦜" to "&vangrt;",
        "ϵ" to "&varepsilon;",
        "ϰ" to "&varkappa;",
        "∅" to "&varnothing;",
        "ϕ" to "&varphi;",
        "ϖ" to "&varpi;",
        "∝" to "&varpropto;",
        "↕" to "&varr;",
        "ϱ" to "&varrho;",
        "ς" to "&varsigma;",
        "⊊︀" to "&varsubsetneq;",
        "⫋︀" to "&varsubsetneqq;",
        "⊋︀" to "&varsupsetneq;",
        "⫌︀" to "&varsupsetneqq;",
        "ϑ" to "&vartheta;",
        "⊲" to "&vartriangleleft;",
        "⊳" to "&vartriangleright;",
        "в" to "&vcy;",
        "⊢" to "&vdash;",
        "∨" to "&vee;",
        "⊻" to "&veebar;",
        "≚" to "&veeeq;",
        "⋮" to "&vellip;",
        "|" to "&verbar;",
        "|" to "&vert;",
        "𝔳" to "&vfr;",
        "⊲" to "&vltri;",
        "⊂⃒" to "&vnsub;",
        "⊃⃒" to "&vnsup;",
        "𝕧" to "&vopf;",
        "∝" to "&vprop;",
        "⊳" to "&vrtri;",
        "𝓋" to "&vscr;",
        "⫋︀" to "&vsubnE;",
        "⊊︀" to "&vsubne;",
        "⫌︀" to "&vsupnE;",
        "⊋︀" to "&vsupne;",
        "⦚" to "&vzigzag;",
        "ŵ" to "&wcirc;",
        "⩟" to "&wedbar;",
        "∧" to "&wedge;",
        "≙" to "&wedgeq;",
        "℘" to "&weierp;",
        "𝔴" to "&wfr;",
        "𝕨" to "&wopf;",
        "℘" to "&wp;",
        "≀" to "&wr;",
        "≀" to "&wreath;",
        "𝓌" to "&wscr;",
        "⋂" to "&xcap;",
        "◯" to "&xcirc;",
        "⋃" to "&xcup;",
        "▽" to "&xdtri;",
        "𝔵" to "&xfr;",
        "⟺" to "&xhArr;",
        "⟷" to "&xharr;",
        "ξ" to "&xi;",
        "⟸" to "&xlArr;",
        "⟵" to "&xlarr;",
        "⟼" to "&xmap;",
        "⋻" to "&xnis;",
        "⨀" to "&xodot;",
        "𝕩" to "&xopf;",
        "⨁" to "&xoplus;",
        "⨂" to "&xotime;",
        "⟹" to "&xrArr;",
        "⟶" to "&xrarr;",
        "𝓍" to "&xscr;",
        "⨆" to "&xsqcup;",
        "⨄" to "&xuplus;",
        "△" to "&xutri;",
        "⋁" to "&xvee;",
        "⋀" to "&xwedge;",
        "ý" to "&yacute",
        "ý" to "&yacute;",
        "я" to "&yacy;",
        "ŷ" to "&ycirc;",
        "ы" to "&ycy;",
        "¥" to "&yen",
        "¥" to "&yen;",
        "𝔶" to "&yfr;",
        "ї" to "&yicy;",
        "𝕪" to "&yopf;",
        "𝓎" to "&yscr;",
        "ю" to "&yucy;",
        "ÿ" to "&yuml",
        "ÿ" to "&yuml;",
        "ź" to "&zacute;",
        "ž" to "&zcaron;",
        "з" to "&zcy;",
        "ż" to "&zdot;",
        "ℨ" to "&zeetrf;",
        "ζ" to "&zeta;",
        "𝔷" to "&zfr;",
        "ж" to "&zhcy;",
        "⇝" to "&zigrarr;",
        "𝕫" to "&zopf;",
        "𝓏" to "&zscr;",
        "‍" to "&zwj;",
        "‌" to "&zwnj;"
)


    override val warpEntrys = ISO8859_1_ESCAPE + HTML40_EXTENDED_ESCAPE + HTML5Encode

    fun replace(str: CharSequence, pos: Int, out: Appendable): Int {
        val len = str.length
        // 检查以确保以&#开头
        if (str[pos] == '&' && pos < len - 2 && str[pos + 1] == '#') {
            var start = pos + 2
            var isHex = false
            val firstChar = str[start]
            if (firstChar == 'x' || firstChar == 'X') {
                start++
                isHex = true
            }

            // 确保&#后还有数字
            if (start == len) {
                return 0
            }
            var end = start
            while (end < len && str[end].isHexChar) {
                end++
            }
            val isSemiNext = end != len && str[end] == ';'
            if (isSemiNext) {
                val entityValue: Int = try {
                    if (isHex) {
                        str.subSequence(start, end).toString().toInt(16)
                    } else {
                        str.subSequence(start, end).toString().toInt(10)
                    }
                } catch (nfe: NumberFormatException) {
                    return 0
                }
                out.append(entityValue.toChar())
                return 2 + end - start + (if (isHex) 1 else 0) + 1
            }
        }
        return 0
    }
}

val Escape.Companion.html get() = HTMLEscape

object HTML5Escape:EscapeString(){
    /**
     * Translator object for escaping HTML version 4.0.
     *
     * While [encodeHtml4] is the expected method of use, this
     * object allows the HTML escaping functionality to be used
     * as the foundation for a custom translator.
     */
    override val strReplacer = ReplacerChain(
        HTMLEscape.strReplacer,
        NumericEntityEncoder.between(0x1, 0x8),
        NumericEntityEncoder.between(0xe, 0x1f),
        NumericEntityEncoder.between(0x7f, 0x84),
        NumericEntityEncoder.between(0x86, 0x9f)
    )

     override val strUnWarpReplacer = ReplacerChain(
        HTMLEscape.strUnWarpReplacer,
        NumericEntityDecoder.INSTANCE
    )
}

val Escape.Companion.html5 get() = HTML5Escape